第7章I2C通信基础_第1页
第7章I2C通信基础_第2页
第7章I2C通信基础_第3页
第7章I2C通信基础_第4页
第7章I2C通信基础_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串口通信的缺点USB转TTLUSART1

USART2c8t6单片机显示器模块摄像头模块Wifi模块USART3I2C通信I2C(Inter-IntegratedCircuit)是由Philips公司开发的一种通用数据总线两根通信线:SCL(SerialClock)、SDA(SerialData)同步,半双工带数据应答支持总线挂载多设备(一主多从、多主多从)硬件电路所有I2C设备的SCL连在一起,SDA连在一起设备的SCL和SDA均要配置成开漏输出模式SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右主机产生SCL信号,从而控制通信的速度,仅有主机可以主动发起数据传输,传输方向:主机->从机,从机->主机,不存在从机->从机

主机

上拉电阻从机2从机1SDA

SCL

从机n7位从机地址1

7位从机地址27位从机地址n(n<=127)SCL

SDA

SCL(时钟)

SDA(数据)SDA

SCLSDA

SCLVcc线与使用硬件电路实现逻辑“与”,输出=

A

&

B

&

C

&…SDASCL4.7k从机1

从机2

从机3SCLSDASDASCLSDASCLSDASCL主机VccSCL信号的产生SDASCL4.7k从机1

从机2

从机3SCLSDASDASCLSDASCLSDASCL主机VccSCL输出=主机&1&1&1&...SDA信号的产生0

100

101

1SDASCL4.7k从机1

从机2

从机3接收方采集数据发送方准备数据SCLSDASCLSDASDASCLSDASCLSDASCL主机Vcc主机发送数据=主机&1&1&1&...从机发送数据=1&从机&1&1&...数据帧格式起始位和停止位起始位StartSCL=1,SDA

停止位StopSCL=1,SDA

SCLSDA空闲:SCL=H,SDA=H寻址与应答应当信号ACK-Acknowledge告知收到起始位主机释放

SDA从机拉低

SDA0

1

1

1

1

0

0

RWACKACKSCLSDA7位地址+RW寻址0x78(读)01111001A6A5A4A3A2A1A0R/W数据发送与接收示例1、向从机0x78写两个字节{0x5a,0x33}2、从从机0x20读一个字节(假设读到的是0x64)发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答(ACK信号),数据1表示非应答(NACK信号)。接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答(ACK信号),数据1表示非应答(NACK信号)注意:读完数据后发送的是NACK信号,告知对方不需要再发送数据了I2C外设简介STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型支持7位/10位地址模式支持不同的通讯速度,标准速度(高达100kbps),快速(高达400kbps)支持DMA兼容SMBus协议STM32F103C8T6硬件I2C资源:I2C1、I2C2I2C框图I2C基本结构TDR-Transmit

Data

Register

-

发送数据寄存器RDR-Receive

Data

Register

-

接收数据寄存器CR-Control

Register

-

控制寄存器SR1-Status

Register

1

-

状态寄存器1SR2-Status

Register

2

-

状态寄存器2CCR-Clock

Control

Register

-

时钟控制寄存器7654321076543210

时钟控制寄存器(CCR)SDASCLSBAFADDRTxERxNEBTFHAL库的编程接口PESTARTACKPOSSTOPSCL控制SDA控制TRABUSYMSL发送接收时钟来自PCLK1总开关SR2SR1TDRRDRCRI2C的HAL库函数函数名功能描述HAL_I2C_IsDeviceReady()检查某个从设备是否准备好了I2C通讯HAL_I2C_Master_Transmit()作为主设备向某个地址的从设备发送一定长度的数据HAL_I2C_Master_Receive()作为主设备从某个地址的从设备接收一定长度的数据HAL_I2C_Slave_Transmit()作为从设备发送一定长度的数据HAL_I2C_Slave_Receive()作为从设备接收一定长度的数据HAL_I2C_Mem_Write()向某个从设备的指定存储地址开始写入一定长度的数据HAL_I2C_Mem_Read()从某个从设备的指定存储地址开始读取一定长度的数据I2C的HAL库函数函数名函数功能描述关联的回调函数HAL_I2C_Master_Transmit_IT()主设备向某个地址的从设备发送一定长度的数据HAL_I2C_MasterTxCpltCallback()HAL_I2C_Master_Receive_IT()主设备从某个地址的从设备接收一定长度的数据HAL_I2C_MasterRxCpltCallback()HAL_I2C_Master_Abort_IT()主设备主动终止中断传输过程HAL_I2C_AbortCpltCallback()HAL_I2C_Slave_Transmit_IT()作为从设备发送一定长度的数据HAL_I2C_SlaveTxCpltCallback()HAL_I2C_Slave_Receive_IT()作为从设备接收一定长度的数据HAL_I2C_SlaveRxCpltCallback()HAL_I2C_Mem_Write_IT()向某个从设备的指定存储地址开始写入一定长度的

数据HAL_I2C_MemTxCpltCallback()HAL_I2C_Mem_Read_IT()从某个从设备的指定存储地址开始读取一定长度的数据HAL_I2C_MemRxCpltCallback()所有中断方式传输函数中断方式传输过程出现错误HAL_I2C_ErrorCallback()I2C的HAL库函数函数名函数功能描述关联的回调函数HAL_I2C_Master_Transmit_DMA()向某个地址的从设备发送一定长度的数据HAL_I2C_MasterTxCpltCallback()HAL_I2C_Master_Receive_DMA()从某个地址的从设备接收一定长度的数据HAL_I2C_MasterRxCpltCallback()HAL_I2C_Slave_Transmit_DMA()作为从设备发送一定长度的数据HAL_I2C_SlaveTxCpltCallback()HAL_I2C_Slave_Receive_DMA()作为从设备接收一定长度的数据HAL_I2C_SlaveRxCpltCallback()HAL_I2C_Mem_Write_DMA()向某个从设备的指定存储地址开始写入一

定长度的数据HAL_I2C_MemTxCpltCallback()HAL_I2C_Mem_Read_DMA()从某个从设备的指定存储地址开始读取一

定长度的数据HAL_I2C_MemRxCpltCallback()硬件I2C示例如何驱动SSD1306SSD1306的地址?SSD1306怎么区分命令和数据?SSD1306的常用命令有哪些,怎么对它进行初始化?SSD1306的寻址模式有哪些?它决定了显存寻址方式和数据写入顺序。硬件I2C示例硬件I2C初始化屏幕初始化(移植OLED驱动)将本库的oled.c,font.c文件加入工程,将oled.h,font.h文件添加到头文件路径STM32初始化IIC完成后调用OLED_Init()初始化OLED,注意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论