MM32SPIN2x 电机专用MCU功能特色 —— I2C功能

本文介绍了MM32SPIN2x 电机专用MCU的I2C功能,包括其特性、协议详情以及如何配置I2C接口来控制OLED模块。通过示例代码展示了I2C的初始化、地址设置、数据发送与接收检查,以及OLED显示模块的初始化和应用。
摘要由CSDN通过智能技术生成

上一章节中已经教大家如何使用ADC和DMA来采集红外测距模块的数据,本章节将与大家一起配置I2C接口来控制一个OLED模块。

I2C介绍

IIC 即Inter-Integrated Circuit(集成电路总线),是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。

图1 I2C主设备与从设备

I2C总线采用一条数据线(SDA),加一条时钟线(SCL)来完成数据的传输及外围器件的扩展。每个器件都有一个唯一的地址识别,而且都可以作为一个发送或接收器。除了发送器和接收器外,器件在执行数据传输时也可以被看做是主机或者从机。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。

在SPIN27上的I2C拥有如下特性:

半双工同步操作
支持主从模式
支持 7 位地址和 10位地址
支持标准模式 100Kbps,快速模式 400Kbps
产生 Start、 Stop、重新发 Start、应答 Acknowledge信号检测
在主模式下只支持一个主机
分别有 2字节的发送和接收缓冲
在 SCL和 SDA上增加了无毛刺电路
支持 DMA 操作
支持中断和查询操作
I2C协议

在I2C中,当总线处于空闲状态时,SCL和SDA同时被外部上拉电阻拉为高电平。在SCL线是高电平时,SDA线从高电平向低电平切换表示起始条件。当主机结束传输时要发送停止条件。在SCL线是高电平,SDA线由低电平向高电平切换表示停止条件。下图显示了起始和停止条件的时序图。

图2 起始和停止条件
I2C总线的数据都是以字节(8位)的方式传送的,每个数据字节在传送时都是高位(MSB)在前。数据传输过程中,当SCL为1时,SDA必须保持稳定。发送器件每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收;接收器不拉低数据总线表示一个NACK,NACK有两种用途:在主机发送从机接收时表示未成功接收数据字节,在从机发送主机接收时表示传送数据结束。

下面是主机对从机的读写过程:

写通讯过程:

1、主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

2、发送一个地址字节(包括7位地址码和一位R/W);

3、当从机检测到主机发送的地址与自己的地址相同时发送一个应答信号(ACK);

4、主机收到ACK后开始发送第一个数据字节;

5、从机收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;

6、主机发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线。

读通讯过程:

1、主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

2、发送一个地址字节(包括7位地址码和一位R/W);

3、当从机检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

4、主机收到ACK后释放数据总线,开始接收第一个数据字节;

5、主机收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束;

6、主机发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

   I2C有两种地址格式: 7位的地址格式和 10位的地址格式。

7位的地址格式:

在起始条件(S)后发送的一个字节的前7位(bit 7:1)为从机地址,最低位(bit 0)是数据方向位,当bit 0为0,表示主机写数据到从机,1表示主机从从机读数据。

图3 7位的地址格式
10 位的地址格式:

在 10 位的地址格式中,发送2个字节来传输 10 位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值