打印
[学习笔记]

AC781X I2C模块应用笔记

[复制链接]
985|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 TechHolder 于 2020-8-4 17:45 编辑


AC781X I2C模块应用笔记


1 I2C模块介绍
1.1 I2C特性
    1. 支持主机和从机模式操作
    2. 支持I2C标准模式与快速模式
    3. 仲裁丢失,自动从主机模式切换到从机模式
    4. 从机地址匹配识别中断
    5. 支持从机监测功能
    6. 从机支持可扩展到10位地址
    7. 从机支持低功耗模式唤醒
    8. 可编程输入毛刺过滤器
    9. 从机支持SCL延伸
    10. 总线开始/停止信号检测
    11. 支持DMA发送和接收


1.2 操作模式
I2C是一种双向二线制同步串行总线,只需要SCL与SDA即可完成连接在总线上器件之间的通信,SCL是由主机驱动的时钟信号,SDA是双向数据信号,可由主机或从机驱动。


1.2.1 数据传输
I2C模块时逐字节传输的串行接口,需要内核控制每个字节的传输;设置START位触发START信号到总线,并初始化一个发送;传输完成后,设置STOP位触发STOP信号到总线。每个字节传输完成后,都会设置BND标识,根据传输方向,在BND1时开始读写数据,完成数据连续传输。


1.2.2 DMA操作
I2C模块支持逐字节DMA TX/RX请求传输,DMA请求仅仅用于数据传输阶段,所以START/STOP信号仍然由软件控制触发。


1.2.3 波特率
   
11I2C波特率计算公式


1.2.4 休眠唤醒
I2C从机可进入低功耗模式。如果地址匹配,低功耗模式下,I2C从机将产生唤醒信号以唤醒MCU;在接收到唤醒序列到STOP信号之前,I2C从机不能发送或接收任何数据,因此,如果地址匹配,从机响应ACK仅是唤醒序列的地址字节,后续所有数据响应的都是NACK。
表 1‑1 LIN支持唤醒低功耗模式

在进入休眠模式之前,需要对唤醒源进行配置,需要在SPM对应寄存器中使能期望的唤醒源,I2C模块默认是禁能状态;调用库SPM_EnableModuleWakeup(SPM_MODULE_I2C)使能I2C模块唤醒,配置产生SPM中断(主要目的是判断唤醒源),就能将MCU从休眠模式中唤醒,Standby模式除外。


2 驱动库
2.1 寄存器驱动


3 例程介绍
3.1 总述
共3个子例程用以阐述I2C的各种功能使用,包括基本收发数据,DMA传输I2C数据,I2C唤醒休眠MCU,每个子例程对应着一个宏定义,通过I2C_SAMPLE_SEL选择不同的子例程。

3.2 例程功能概述
3‑1 例程功能描述


欢迎各位坛友指正,后续会根据问题持续更新。



I2C_Sample.rar

1.17 MB

使用特权

评论回复

相关帖子

沙发
zchunhua25| | 2019-9-26 16:19 | 只看该作者
例程里的写接口应该增加一个写完是否发送结束位的参数的,中断函数也应该根据这个参数决定是否发送结束位,而不是每次发送完数据都发送结束位。读EEPROM的时候,写完设备地址和内容地址后,是不应该发送结束位的,然后接着启动读操作。我在尝试更改你们的I2C驱动

使用特权

评论回复
板凳
zlmin| | 2019-10-3 10:21 | 只看该作者
谢谢分享!

使用特权

评论回复
地板
zchunhua25| | 2019-10-12 15:44 | 只看该作者
竟然没人发现这个问题,难道是我用得不对,大家都没问题?

使用特权

评论回复
5
TechHolder|  楼主 | 2019-10-12 17:12 | 只看该作者
zchunhua25 发表于 2019-9-26 16:19
例程里的写接口应该增加一个写完是否发送结束位的参数的,中断函数也应该根据这个参数决定是否发送结束位, ...

嗯,你说的,是对的。

使用特权

评论回复
6
TechHolder|  楼主 | 2019-10-12 17:12 | 只看该作者
zchunhua25 发表于 2019-9-26 16:19
例程里的写接口应该增加一个写完是否发送结束位的参数的,中断函数也应该根据这个参数决定是否发送结束位, ...

嗯,你说的,是对的。

使用特权

评论回复
7
TechHolder|  楼主 | 2019-10-12 17:12 | 只看该作者
本帖最后由 TechHolder 于 2019-10-12 17:13 编辑
zchunhua25 发表于 2019-9-26 16:19
例程里的写接口应该增加一个写完是否发送结束位的参数的,中断函数也应该根据这个参数决定是否发送结束位, ...

嗯,你说的是对的,目前的demo由于只是两个开发板在通信,没有设计成你说的那种。

使用特权

评论回复
8
zchunhua25| | 2019-10-14 14:39 | 只看该作者
TechHolder 发表于 2019-10-12 17:12
嗯,你说的是对的,目前的demo由于只是两个开发板在通信,没有设计成你说的那种。 ...

已经拿例程更改了,成功实现EEPROM读写。

使用特权

评论回复
9
TechHolder|  楼主 | 2020-8-4 17:46 | 只看该作者
对I2C例程进行更新,主从机通信加入同步机制。

使用特权

评论回复
10
zeshoufx| | 2020-8-10 09:16 | 只看该作者
谢谢分享【AC781X I2C模块应用笔记】

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

219

帖子

3

粉丝