还剩5页未读,继续阅读
文本内容:
有关11c和nc的自调试技巧AXI PSlie协议与编程序列”一文,我们为内部集成电路die协议的初学者们提供了有关该协议基础知识和编程序列的详细解释在本篇博文中,我们将探讨有关AXI IIC和PS IIC的自调试技巧PS IIC编程序列调试控制器设置为“主发射器Mastertransmitter no在Zynq-7000/Zynq UltraScale+器件中启用PS IIC确保SCL频率配置为O100kHz或400kHzo设置主发射器控制器的控制寄存器检查中断是否已清除,并且已配置实际SCL的时钟分频器要测试与从设备的通信,请将从地址写入PS I2C地址寄存器I2C Address,然后将数据写入I2C_data_regHOLD位应根据数据大小来处理当数据大小小于FIFO深度时,请清除HOLD位以终止事务传输,并生成STOP位在中断使能寄存器IER中使能NACK中断后,即可通过ISR来监控从设备应答ACKo验证ISR中的COMP标记位已置位这样即可确认数据传输成功如果主传输不成功,用户可使用以下步骤进行调试确保控制寄存器中的配置正确无误检查ISR中的NACK位,以确认从设备的响应按上述方式谨慎处理HOLD位否则,将导致SCL下拉直至超时为止监控状态寄存器中的TXDV位,检查是否有任何暂挂数据正在等待传输状态寄存器中的“总线繁忙Bus busy”位或BA位将有助于您了解数据传输期间的总线状态控制器设置为“主接收器Masterreceiver”与对应主发射器的步骤1相同,在Zynq-7000/Zynq UltraScale+器件中启用PS IICo确保SCL频率配置为100kHz或400kHz使用软件应用来设置主接收器控制器的控制寄存器与对应主发射器的步骤3相同,检查中断是否已清除,并且已配置实际SCL的时钟分频器将读取数据计数填入PS IIC的传输大小寄存器如果传输大小大于FIFO深度,则启用HOLD位将地址写入从地址寄存器等待数据接收完成,可通过检查状态寄存器的RXDV位来确认如果RXDV=0且ISR中有任意中断位处于置位状态,则停止传输并报告错误同样,如果RXDV=1且ISR中有任意中断位处于置位状态,则停止传输并报告错误如果RXDV=1且未报告任何错误,则从FIFO读取数据,直至状态变为RXDV=1为止如果尚未完成接收的剩余数据(来自从设备)小于FIFO深度,则清除HOLD位等待ISR中的COMP位变为置位状态以完成传输以上对应编程序列的调试步骤适用于默认轮询方法如果对主接收器使用中断方法,则存在如下差异您需要在数据传输前启用中断无需监控RXDV位,而需检查ISR中的DATA位常见问题解答在ns中,何谓“超时”?如果在任何时间点上,主设备或接入的从设备将SCL时钟信号置于低位,且时间超过超时寄存器中指定的时间段,则会生成[TO]中断位以避免出现停滞状况如何将PS IIC复位寄存器RST_LPD_IOU2位9和10用于复位控制器支持哪些模式?主设备模式、从设备模式以及多重主设备模式注在多重主设备模式下,所有主设备中的SCL频率需保持相同支持哪些频率?仅支持100kHz和400kHzo用户如何检查总线错误?在ISR寄存器中,监控总线上是否存在ARB_L0ST、NACK、RX_0VF和RX_UNF错误如何区分DATA标记与COMP标记?在ISR寄存器中,对应每读取14字节数据,DATA位就有一个触发器,而COMP位则用于指示传输完成PS IIC遵循何种规范?NXP规范UM10204支持的最大数据发射率是多少?255个字节AXI IIC编程序列调试用户可以使用以下读写操作来调试AXI IIC IP,以了解协议是否正常工作快速获取结果的首选选项是使用“动态”编程进行调试动态读取操作此操作的最终目的是从从设备中读取单一寄存器,以证明主从设备的功能是否正常使用写入操作将START+从设备地址一起写入TX FIFO将从设备的子寄存器地址写入TX FIFO使用读取操作将RE-START+从设备地址一起写入TX FIFO将STOP+要从从设备读取的字节数一起写入TX FIFO使用控制寄存器来启用控制器轮询RX_FIFO_EMPTY的状态寄存器,以查看数据接收状态(如果RX_FIFO=0,则数据已进入接收FIFO内)如果RX FIFO中无数据,且RX_FIFO_EMPTY为1,则可遵循以下步骤来了解问题如果由于从设备不响应而导致无法接收数据,那么原因可能是指定地址不存在任何从设备请复查从设备地址是否正确如果您确认从设备地址正确无误,请探测SCL/SDA以了解是否正在从从设备生成ACKo如果有来自从设备的ACK,请以相同方式检查子寄存器,以对通信进行调试检查TX_FIFO_Einpty标记,确认是否所有数据都已完成发射如果步骤6中未发现任何问题,则表示您可从从设备接收数据,请检查是否已建立通信动态写入操作使用写入操作将START+从设备地址一起写入TX FIFO将从设备的子寄存器地址写入TX FIFO将除最后一个字节外的所有数据字节都写入TX FIFO将STOP+最后一个数据字节写入TX FIFO使用控制寄存器来启用控制器轮询TX_FIFO_EMPTY的状态寄存器,以判定数据发射状态(TX_FIFO_Empty=1表示数据发射已完成)如果用户想要检查写入操作是否正确,可通过以下步骤来进行调试请检查发射占用寄存器,确认是否已发射所有数据用户还可以执行上述读取操作以便通过读取和验证数据来交叉验证写入操作如果有来自从设备的ACK,还请以相同方式检查子寄存器,以对通信进行调试检查TX_FIFO_Empty标记,确认是否所有数据都已完成发射如果步骤6中未发现任何问题,则表示您可将数据写入从设备,请检查是否已建立通信如何开始进行基本设计测试逻辑测试用例:从PS-IIC访问EEPROM-用户可参阅代码示例以测试如何通过PS IIC控制器访问从设备针对从设备的低级AXI IIC寄存器访问-用户可使用随附的代码示例来测试AXI IIC控制器的基本功能从AXI-IIC访问EEPROM-用户可参阅代码示例以测试如何通过AXI IIC控制器访问从设备Linux测试用例从PS-HC访问EEPROM请参阅Wiki页面https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver以获取PS IIC内核配置、设备树节点和可用的用户应用示例从AXI-IIC访问EEPROM请参阅Wiki页面https:〃xilinx-wiki,atlassian.net/wiki/spaces/A/pages/18841974/Linux+12C+Driver以获取AXI IIC内核配置、设备树节点和可用的sysfs示例时钟拉伸IIC设备可以通过拉伸SCL来延缓通信在SCL低位状态下,总线上的任何nc主设备或从设备均可额外下拉以防止其重新拉高,使其能够降低SCL口寸SCL钟速率或者将nc通信停止一段时间ClockStretching ACK如何使用AXI-IIC来测试时钟拉伸测试用例的目的是生成时钟拉伸机制简单硬件设计示例如下创建含2个AXI-IICIP实例的Vivado硬件设计在此测试用例中,2个IP的输出频率相同每个AXI IICIP的SCL和SDA都应在外部环回,即SCL0到SCL1且SDA0到SDAlo设计就绪后,您就可以导出到SDK并包含以下附件中的源代码注随附的模块框图和源代码示例已在ZCU102板上经过测试用户可以在自己的定制板上利用此测试用例,也可将其移植到Vitiso如何为赛灵思IIC控制器选择从设备?AXI IIC和PS IIC控制器都符合NXP IIC总线规范用户必须确保其选择使用的从设备的时序参数与UM10204的第48页上的“表10”中的参数相同ultra pse0Processor SystemResetps80axi periphmaxhpmOJpdadk/111+SOO AXI瓶…四乙J|ACLKM AXI*M LPD+plARES6TNUltraSCALE+SOO_ACLKMOOLAXI+SOO..ARESETNresetnO«pl_dkOM
01.AXI+MOO„ACLKMOO..ARESETNrsl_ps8_0_99M MOLACIKM01ARESCTNslowestsync dkextjmbreset busstructAX!Interconnectbeijn feset|D:O|p«apheraraw_reset Jnmbreiet|O^Jinterconnectdebugsys rstdem ar6$etn|0:0|tocked periphefaLaceetn|D:O|Symbol ParameterConditions Standard-mode Fast-mode F4Min MaxMin Max1SCL dockfrequency01000400fsCLhold timerepeated STARTcondition Afterthis period,the firstclock
4.
0.
0.6■|CtHD.STApulse isgenerated.kow LOWperiod of the SCLclock
4.7■
1.3一IcHIGH periodoftheSCL dock
4.
00.6一tHIGHtsU.STA set-up timefor arepeated START
4.7・
0.6■cconditiondata holdtimeEl
5.0一■t«D;DAT CBUScompatiWe mastersseeRemark inSection
4.1l2C4us devices阻上1O411tsU.DAT dataset-up time250■1031■tr risetime ofboth SDAand SCLsignals■100020300一300300tf20x Ifalltime ofboth SDAand SCLsig向例到I VDO/
5.5V VDD/tsU.STO set-up timefor STOPcondition
4.
0.
0.6一C
4.
7.■tfiUF busfree timebetween aSTOP and
1.31START conditionCtcapacitive loadfor eachbus fineU21■400•400tvD.DAT datavalid timelUi・
3.451^1一
0.9出tvDACK datavalid acknowledge
3.451H・V nLnoisemargin atthe LOWlevelfor eachconnected device01VDO■
0.1VDD一
0.including hysteresisnoisemargin atthe HIGHlevel02VDD■VnH
0.2V
0.for eachconnected deviceDDincluding hysteresisSDA和SCL总线行的时序参数注PS IIC不支持Fast-mode Plus审核编辑李倩。