有关AXI IIC和PS IIC的自调试技巧_第1页
有关AXI IIC和PS IIC的自调试技巧_第2页
有关AXI IIC和PS IIC的自调试技巧_第3页
有关AXI IIC和PS IIC的自调试技巧_第4页
有关AXI IIC和PS IIC的自调试技巧_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

有关AXIIIC和PSIIC的自调试技巧“IIC

协议与编程序列”一文,我们为内部集成电路

(IIC)

协议的初学者们提供了有关该协议基础知识和编程序列的详细解释。在本篇博文中,我们将探讨有关AXIIIC和PSIIC的自调试技巧。PSIIC编程序列调试:

控制器设置为“主发射器(Mastertransmitter)”。在Zynq-7000/ZynqUltraScale+器件中启用PSIIC。确保SCL频率配置为100kHz或400kHz。设置主发射器控制器的控制寄存器。

检查中断是否已清除,并且已配置实际SCL的时钟分频器。要测试与从设备的通信,请将从地址写入PSI2C地址寄存器(I2C_Address),然后将数据写入I2C_data_regHOLD位应根据数据大小来处理。当数据大小小于FIFO深度时,请清除HOLD位以终止事务传输,并生成STOP位。

在中断使能寄存器(IER)中使能NACK中断后,即可通过ISR来监控从设备应答(ACK)。验证ISR中的COMP标记位已置位。这样即可确认数据传输成功。如果主传输不成功,用户可使用以下步骤进行调试:确保控制寄存器中的配置正确无误检查ISR中的NACK位,以确认从设备的响应按上述方式谨慎处理HOLD位。否则,将导致SCL下拉直至超时为止监控状态寄存器中的TXDV位,检查是否有任何暂挂数据正在等待传输状态寄存器中的“总线繁忙(Busbusy)”位或BA位将有助于您了解数据传输期间的总线状态。控制器设置为“主接收器(Masterreceiver)”与对应主发射器的步骤1相同,在Zynq-7000/ZynqUltraScale+器件中启用PSIIC。确保SCL频率配置为100kHz或400kHz。使用软件应用来设置主接收器控制器的控制寄存器。

与对应主发射器的步骤3相同,检查中断是否已清除,并且已配置实际SCL的时钟分频器。将读取数据计数填入PSIIC的传输大小寄存器。如果传输大小大于FIFO深度,则启用HOLD位。将地址写入从地址寄存器等待数据接收完成,可通过检查状态寄存器的RXDV位来确认。如果RXDV=0且ISR中有任意中断位处于置位状态,则停止传输并报告错误。同样,如果RXDV=1且ISR中有任意中断位处于置位状态,则停止传输并报告错误。如果RXDV=1且未报告任何错误,则从FIFO读取数据,直至状态变为RXDV=1为止。如果尚未完成接收的剩余数据(来自从设备)小于FIFO深度,则清除HOLD位。等待ISR中的COMP位变为置位状态以完成传输。以上对应编程序列的调试步骤适用于默认轮询方法。

如果对主接收器使用中断方法,则存在如下差异:您需要在数据传输前启用中断无需监控RXDV位,而需检查ISR中的DATA位。常见问题解答

在IIS中,何谓“超时”?

如果在任何时间点上,主设备或接入的从设备将

SCL时钟信号置于低位,且时间超过超时寄存器中指定的时间段,则会生成[TO]中断位以避免出现停滞状况。如何将PSIIC复位?

寄存器

RST_LPD_IOU2位9和10用于复位控制器支持哪些模式?

主设备模式、从设备模式以及多重主设备模式。

注:在多重主设备模式下,所有主设备中的SCL频率需保持相同。支持哪些频率?

仅支持100kHz和400kHz。用户如何检查总线错误?

在ISR寄存器中,监控总线上是否存在ARB_LOST、NACK、RX_OVF和RX_UNF错误。如何区分DATA标记与COMP标记?

在ISR寄存器中,对应每读取14字节数据,DATA位就有一个触发器,而COMP位则用于指示传输完成。PSIIC遵循何种规范?

NXP规范UM10204

支持的最大数据发射率是多少?

255

个字节AXIIIC编程序列调试:

用户可以使用以下读写操作来调试AXIIICIP,以了解协议是否正常工作。快速获取结果的首选选项是使用“动态”编程进行调试。动态读取操作:此操作的最终目的是从从设备中读取单一寄存器,以证明主从设备的功能是否正常。使用写入操作将START+从设备地址一起写入TXFIFO将从设备的子寄存器地址写入TXFIFO使用读取操作将RE-START+从设备地址一起写入TXFIFO将STOP+要从从设备读取的字节数一起写入TXFIFO使用控制寄存器来启用控制器轮询RX_FIFO_EMPTY的状态寄存器,以查看数据接收状态(如果RX_FIFO=0,则数据已进入接收FIFO内)如果RXFIFO中无数据,且RX_FIFO_EMPTY为1,则可遵循以下步骤来了解问题:如果由于从设备不响应而导致无法接收数据,那么原因可能是指定地址不存在任何从设备。请复查从设备地址是否正确。如果您确认从设备地址正确无误,请探测SCL/SDA以了解是否正在从从设备生成ACK。如果有来自从设备的ACK,请以相同方式检查子寄存器,以对通信进行调试。检查TX_FIFO_Empty标记,确认是否所有数据都已完成发射。如果步骤6中未发现任何问题,则表示您可从从设备接收数据,请检查是否已建立通信。动态写入操作:使用写入操作将START+从设备地址一起写入TXFIFO将从设备的子寄存器地址写入TXFIFO将除最后一个字节外的所有数据字节都写入TXFIFO将STOP+最后一个数据字节写入TXFIFO使用控制寄存器来启用控制器轮询TX_FIFO_EMPTY的状态寄存器,以判定数据发射状态(TX_FIFO_Empty=1表示数据发射已完成)。如果用户想要检查写入操作是否正确,可通过以下步骤来进行调试:请检查发射占用寄存器,确认是否已发射所有数据。用户还可以执行上述读取操作以便通过读取和验证数据来交叉验证写入操作。如果有来自从设备的ACK,还请以相同方式检查子寄存器,以对通信进行调试。检查TX_FIFO_Empty标记,确认是否所有数据都已完成发射。如果步骤6中未发现任何问题,则表示您可将数据写入从设备,请检查是否已建立通信。如何开始进行基本设计测试?逻辑测试用例:从PS-IIC访问EEPROM-用户可参阅代码示例以测试如何通过PSIIC控制器访问从设备。针对从设备的低级AXIIIC寄存器访问-用户可使用随附的代码示例来测试AXIIIC控制器的基本功能。从AXI-IIC访问EEPROM-用户可参阅代码示例以测试如何通过AXIIIC控制器访问从设备。

Linux测试用例:从PS-IIC访问EEPROM请参阅Wiki页面/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver以获取PSIIC内核配置、设备树节点和可用的用户应用示例。从AXI-IIC访问EEPROM请参阅Wiki页面/wiki/spaces/A/pages/18841974/Linux+I2C+Driver以获取AXIIIC内核配置、设备树节点和可用的sysfs示例。时钟拉伸IIC设备可以通过拉伸SCL来延缓通信。在SCL低位状态下,总线上的任何IIC主设备或从设备均可额外下拉SCL以防止其重新拉高,使其能够降低SCL时钟速率或者将IIC通信停止一段时间。如何使用AXI-IIC来测试时钟拉伸测试用例的目的是生成时钟拉伸机制。简单硬件设计示例如下:创建含2个AXI-IICIP实例的Vivado硬件设计在此测试用例中,2个IP的输出频率相同。每个AXIIICIP的SCL和SDA都应在外部环回,即SCL0到SCL1且SDA0到SDA1。设计就绪后,您就可以导出到SDK并包含以下附件中的源代码。注:随附的模块框图和源代码示例已在ZCU102板上经过测试。用户可以在自己的定制板上利用此测试用例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论