本帖最后由 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标识,根据传输方向,在BND为1时开始读写数据,完成数据连续传输。
1.2.2 DMA操作
I2C模块支持逐字节DMA TX/RX请求传输,DMA请求仅仅用于数据传输阶段,所以START/STOP信号仍然由软件控制触发。
1.2.3 波特率
图 1‑1I2C波特率计算公式
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 例程功能描述
欢迎各位坛友指正,后续会根据问题持续更新。
|