完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
模拟 I²C 接口程序的基本框架如图 4-4 所示。 1.程序接口 用于和应用程序连接的接口,将应用程序的数据按照 I²C 协议的方式通过 SDA 传递给外部器件。包括下列内容: • clk_I FPGA 外部时钟信号。 • rst_I 同步重起信号。 • arst_I 异步重起信号。 • adr_I 从节点地址。 • dat_I 输入数据。 • dat_o 输出数据。 • we_I 写有效信号。 • stb_I 接口有效信号。 • cyc_I 有效总线周期输入。 • ack_o 应答信号输出。 • inta_o 中断信号输出。 2.时钟设置寄存器 I2C 协议提供了 3 种速度模式:正常速度模式 100kbit/s、快速模式 400kbit/s、高速模式3.5Mbit/s。SCL 输出的时钟信号频率和速度模式一致。程序内部使用 5 倍 SCL 信号作为时钟,而 FPGA 外部时钟需要经过分频得到程序内部使用的时钟。例如:采用正常速度 100kbit/s,FPGA 外部时钟为 50MHz,则时钟设置寄存器需要设置为(50MHz/5*100kHz – 1=99)。 3.时钟产生模块 时钟产生模块产生 4 倍 SCL 频率的时钟信号,它为位传输控制模块中所有同步动作提供触发信号。 4.命令寄存器 命令寄存器共 8 位,它决定是否在总线上产生各种时序信号、是否读/写数据,各位表示的含义如表 4-1 所示。 5.状态寄存器 状态寄存器用来显示当前总线的状态,例如是否接收到从节点的应答信号、是否忙、是否在传递数据等,具体内容如表 4-2 所示。 6.数据传输寄存器 数据传输寄存器用于保存等待传输的数据。当传递从节点地址信息时,前 7 位保存从节点地址,最后一位保存读写命令;当传递普通数据时,8 位保存一个字节数据。数据传输寄存器具体内容如表 4-3 所示。 7.数据接收寄存器 数据接收寄存器用于保存通过I2C 总线接收到的最后一个字节内容,具体内容如表4-4所示。 8.字节传输控制模块 字节传输控制模块以字节为单位控制 I²C 总线的数据传输。这个模块按照命令寄存器设置的内容将数据传输寄存器内容传递到 I²C 总线的接收端,或者从 I²C 总线发送端接收数据并保存到数据接收寄存器中。 9.位传输控制模块 位传输控制模块以位为单位进行 I²C 总线的数据传输和产生各个 I²C 协议命令(如开始、停止、重复开始等)。字节传输控制模块控制位传输控制模块的各种动作。例如读取一个字节数据,位传输控制模块需要执行 8 个读的命令。 10.数据移位寄存器 数据移位寄存器保存的数据总是和当前的数据传输相关的。例如在进行读操作时,主节点通过移位寄存器依次通过 SDA 获得来自 I²C 发送端的数据,完成后数据拷贝到数据接收寄存器中。在写操作时,数据传输寄存器中的数据拷贝到数据移位寄存器中,然后依次通过 SDA 将数据传输到 I²C 总线的接收端。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2866 浏览 3 评论
27631 浏览 2 评论
3439 浏览 2 评论
3960 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2305 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:39 , Processed in 0.347620 second(s), Total 40, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号