我正在努力让Xilinx AXI IIC-Core示例正常工作,可以在C:\Xilinx\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\iic_v2_08_a\examples\xiic_slave_example.c
找到。有没有人体验过这个核心?
我找到了这个pg090 axi iic说明,其中说明了
主站和从站之间的总线上的标准通信由四部分组成:
- 开始
- 奴隶地址
- 数据传输
- 停止
但是当我发送一个写传输时,地址和消息都被接受但是SCL在SLAVE中保持低电平。
有人能给我一个提示,为什么会这样?虽然时序特性的详细描述可能会有所帮助。
答案 0 :(得分:1)
我知道非常晚的答案,但并不是完全正确的答案,但是我尝试了具有相同结果的示例。它之所以可能保持较低的原因,是因为该示例期望接收一定数量的字节,这在现实世界中对于典型的从设备来说根本不可行。
我设法通过仅使用低级功能(在xiic_l.h中定义)并使用AXI IIC总线接口v2.0文档第34-35页来实现具有典型“ EEPROM”协议的工作从设备,而无需使用中断。
该示例代码很可能是由于未处理的中断或未在应使用其中一个处理程序的情况下清除中断而导致的,但始终找不到哪一个。可能正在等待到达RX_FIFO_PIRQ,正如我所说对于从属设备不切实际,应该一点一点地来,这就是为什么RX_FIFO_PIRQ应该为0x00的原因。
一些我学到的东西。 CTRL.TX必须为1才能从从设备进行发送,而CTRL.TXFIFORESET必须为0才可以写入发送(我将其清除为高电平,并且没有自动复位该位,然后写入TX无效,即SCL / SDA为低电平)...
我将首先介绍中断版本,以了解如何使用中断来实现它。