opencore I2C寄存器简介

本文默认读者了解I2C通信时序图

I2C接口定义了3种传输速率:
—Normal: 100Kbps
—Fast: 400Kbps
—High speed: 3.5Mbps

在这里插入图片描述
在这里插入图片描述

Prescale 预分频

时钟输入为 clk =32MHz
期望SCL = 100K
pre = 32/(5*100) KHz -1 = 63 = 0x3F
复位值 0xFFFF

Control 控制寄存器 CTR


7 置1使能I2C
6 置1使能中断
5:0 Reserved

只有当’ EN ‘位被设置时,核心才会响应新命令。待执行的命令结束。只有在没有传输正在进行时,即在STOP命令之后,或当命令寄存器设置了STO(停止)位时,才清除’ EN '位。当在传输期间停止时,核心可以挂起I2C总线。
复位0x00

Transmit 传输寄存器TXR

8位数据
其中第0位 在传输从机地址时 1表示从从机中读 0表示向从机中写
该寄存器可以传输从机地址,寄存器地址,数据
复位置0x00

Receive

这个没啥好说的

Command 命令寄存器CR(只写)

Bit功能
7开始传输STA
6停止传输STO
5从从机中读RD
4写WR
3ACK 作为接收时,发送ACK信号0或1
2:1保留
0中断、设置后,清除一个挂起的中断。IACK

传输后STA、STO、RD、WR、IACK位自动清除。
0x00

Status 状态寄存器SR(只读)

Bit描述
7表示收到从机的确认。0已接收到
6检测总线状态 1忙
5AL仲裁
0如果中断标志。这个位是在中断挂起时设置的,如果设置了IEN位,将导致处理器中断请求。

传输

一般情况下,标准通信包括四部分:
1)START信号的产生
2)Slave地址的传输
3)数据的传输
4)STOP信号的产生
在这里插入图片描述
流程图
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花椒且喵酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值