ZYNQ之路--AxiIIC IP核使用(基于PYNQ)

目录

 IIC协议详解

      IIC的控制协议

              数据有效

               传输起始信号

                传输停止信号

                应答&&非应答信号

         IIC传输协议

                写传输

                读传输

Axi IIC IP核详解

      send(address, data, length, option=0)

       receive(address, data, length, option=0)

       waite()


 

        “IICInter-Integrated Circuit)IICBus的简称,中文名为集成电路总线。它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板嵌入式系统手机用以连接低速周边设备而发展。”

         说起这个协议,大家肯定是十分熟悉的啦,通常我们有两种方法来实现IIC:

  1. GPIO模拟控制
  2. 专用的硬件结构控制

        本节我们要讲的AxiIIC IP核是通过AXI总线来控制的一个实现IIC通信协议的IP核 ,类似AxiGPIO IP。

        

 IIC协议详解

        这部分主要写给新手朋友看,主要是一些关于IIC协议的基本知识

      IIC的控制协议

        IIC协议是一个半双工的串行通信协议,有两条信号线,使用时需要上拉:

  1. SCL:该信号线负责传输时钟信号,由发送主机控制
  2. SDA:该信号线负责传输数据信号,由发送主机控制

              数据有效

       当SCL为高电平时,SDA应该保持不变,并且此时SDA的信号即为有效,当SCL为低电平时,SDA才可以改变

               传输起始信号

        当SCL为高电平时,SDA出现下降沿。

                传输停止信号

        当SCL为高电平时,SDA出现上升沿

                应答&&非应答信号

        当传输完前8bit数据后,主机将释放数据线(此时由于上拉,默认SDA为高电平),此时从机将拉低SDA信号线,代表数据接收成功。 

        当主机为接收端时,接收完一字节数据后,在第9bit时,如果发出非应答(NACK)信号,那么指示数据接收完成,可以停止了。

        综上所述,非应答信号有可能是主机发送,也有可能是从机发送,但其中不变的是,如果想继续接收数据,那么就应答,不接收了就非应答,这是相对接收和应答的

         IIC传输协议

        控制协议确保了每次传输,每个数据都能被正常准确接收,传输协议则规定了一种读写的规范。

                写传输

        写传输总结起来就是:“设备地址 + N个传输数据”

        上面的图片展示了主机写从机寄存器的例子,主机发送起始信号,先传输一字节的地址信息。这里我们注意,地址信息共有7bit,最后1bit表征对这个设备进行读还是写操作。 

        这个例子的格式为“设备地址 + 写/读的寄存器地址 + 写/读的数据

                读传输

        类似写传输,格式总结起来是“设备地址 + N个传输的数据”

        上面给的传输例子,其总结起来的步骤是:

  1. 设备地址
  2. 要读的寄存器地址
  3. 设备地址(上面两部相当于指定好了设备的寄存器,接下来开始读)
  4. 读取的数据

        当主机认为读取要结束时,发送一个非应答信号,指示从机停止发送,并且主机开始接管总线,并且发送停止信号。

Axi IIC IP核详解

        当我们使用了Axi IIC IP核之后,我们就不需要关心协议的具体实现过程了,我们在PS通过调用Xilinx官方提供的接口,来完成数据的发送与接收。

        实例化Overlay中的Axi IIC对象后我们需要重点关注三个方法:

      send(address, data, length, option=0)

  • address是IIC从设备的地址
  • data是需要发送的数据,我们传入的常常为一个数组
  • length是传输数据的字节数
  • option参数默认为0,代表不使用重复传输,相反,如果等于1则使能

       receive(address, data, length, option=0)

  • address是IIC从设备的地址
  • data是需要接收数据的保存仓库,我们传入的常常为一个数组
  • length是传接收的字节数
  • option参数默认为0,代表不使用重复传输,相反,如果等于1则使能

       waite()

        该方法的作用是等待传输完成。

本文结束~

### 回答1: UG585-Zynq-7000-TRM是一份关于Xilinx Zynq-7000 SoC处理器的技术参考手册。Zynq-7000 SoC处理器是一款配备ARM Cortex-A9双核处理器和Xilinx可编程逻辑部分(PL)的可扩展平台,旨在为嵌入式系统开发者提供卓越的灵活性和可编程性。 TRM代表Technical Reference Manual(技术参考手册),其中包含了该处理器的体系结构和功能特性的详细描述,包括处理器内部的各种模块、外设、总线结构等等。该手册的主要目的是为开发者提供全面的指导和支持,从而加速其系统设计和开发应用,减少错误和风险。 UG585-Zynq-7000-TRM手册的内容包括Zynq-7000的基本特征、处理器硬件和软件架构、可编程逻辑PL和PS之间的通信、外设接口和寄存器映射、中断控制等内容。开发者可以根据手册中的详细说明,了解Zynq-7000的构成和功能,从而基于此设计和实现自己的应用。 总之,UG585-Zynq-7000-TRM手册是一份非常重要的技术参考资料,为开发者提供全面的指导和支持,促进了Zynq-7000处理器的应用和拓展,也为未来的嵌入式系统设计提供了参考和借鉴。 ### 回答2: UG585是Xilinx公司发布的Zynq-7000系列技术手册,全称为“Zynq-7000 All Programmable SoC Technical Reference Manual”。Zynq-7000系列是Xilinx公司推出的一款功能强大的FPGA芯片,集成了双核ARM Cortex-A9处理器和可编程逻辑资源,支持高性能中间件、操作系统和外围设备的支持。该手册详细介绍了Zynq-7000系列SoC的架构、功能、性能、测试和验证、软件和硬件开发等方面的知识。他对于学习使用开发Zynq-7000 SoC具有非常重要的意义,使得开发人员能够深入了解这个芯片的细节,掌握它的特性和功能,以便更加高效地使用它进行开发。如果你想要学习使用Zynq-7000 SoC,UG585是一个非常重要的参考文献,值得认真阅读和研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值