[学习笔记] AC781X I2C模块应用笔记

[复制链接]
78|0
 楼主 | 2019-8-8 22:49 | 显示全部楼层 |阅读模式
本帖最后由 TechHolder 于 2019-8-8 23:00 编辑


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 波特率
    I2C_1.png
11I2C波特率计算公式


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

在进入休眠模式之前,需要对唤醒源进行配置,需要在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_3.jpg


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



I2C_Sample.rar

823.58 KB, 下载次数: 6

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表