《STM32从零开始学习历程》@EnzoReventon
相关资料:
I2C物理层介绍
I2C固件库介绍
STM32的I2C特性及架构介绍
参考资料:
[野火EmbedFire]《STM32库开发实战指南——基于野火霸天虎开发板》
[正点原子]STM32F4开发指南-库函数版本_V1.2
[ST]《STM32F4xx中文参考手册》
I2C的协议规定了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。
起始和停止信号指用什么来表示通讯的开始和结束。
数据有效性指在时钟线(SCL)某个电平的时候对数据线(SDA)进行数据采样。
I2C写过程:
上图中,打斜杠的部分是指数据由主机传输至从机;不打斜杠部分为数据由从机传输至主机。
S表示传输开始信号。
SLAVE_ADDRESS表示从机地址。
A或者非A表示应答(ACK)或者非应答(NACK)信号。
举个例子:老师要告诉小明的数学成绩。
首先老师说:“我要开始告诉某个同学的成绩了。”————这一步被抽象成I2C通讯中的S,表示传输开始信号。
接着,老师点名小明。————这一步被抽象成I2C通讯中的SLAVE ADDRESS,表示从机地址,就是说老师需要吧成绩告诉小明,小明是一个对象,当然也就是一个地址。
老师说:“我要告诉你成绩”————这一步被抽象成I2C通讯中的R/W,在这个场景中,老师是“主机”,要告诉小明(从机)他的成绩,因此是由主机写如从机。
这时候,小明回答:“好的。”表示小明已经准备好接收老师即将汇报的成绩。————这一步被抽象成A,从机应答。这样可以保证数据发送与接收的准确性。
老师说:“小明你的数学成绩为99分。” ————DATE
小明说:“好的老师!” ————A
老师说:“小明你的语文成绩为102分。” ————DATE
小明说:“好的老师!” ————A
老师说:“小明你的语文成绩为102分。” ————DATE
…………小明没有应答。有可能是他来不及记录了。 ————非A
老师就停止报成绩。 ————P
老师报成绩是当着全班的面报的,大家都可以听到,老师是主机,各位同学们就是从机,老师向大家报小明的成绩,其实就是广播的概念,但是只能有小明响应。
以此类推读过程也是一样的。
比如说,老师让小明报数学和语文的成绩。
老师说:“我要同学给我报一下成绩。” ————S,开始标志。
老师点名小明。 ————SLAVE ADDRESS,从机地址。
老师说:“请你报你的成绩。” ————R/W 读还是写,相对于从机而言。
小明说:“好的。” ————A 白色底的A,从机响应。
小明说:“数学:99。” ————DATE,从机发送数据。
老师说:“好,下一个。” ————A 条纹底的A,主机响应。
小明说:“语文:102。” ————DATE,从机发送数据。
老师说:“好的,报完了请坐。” ————非A,数据接收完毕。
结束。————P,停止标志。
I2C复合读写过程:
一般而言,I2C复合模式第一次通讯是告诉从机读写地址,第二次则是读写的实际内容。
详细过程:
这5个PHP编程中的不良习惯,一定要改掉 PHP世界上最好的语言! 测试循环前数组是...
在大三的时候,一直就想搭建属于自己的一个博客,但由于各种原因,最终都不了了...
首先到这里下载其源码。里面东西挺多的,我们基本上可以把它放到两个文件夹就是...
MFC项目在vs2017编译正常无报错,但是升级vs2019后一打开项目就报如下错误。 项...
今天看到个不错的网页播放器,感觉不错,大家可以测试 我写的一个播放器网页: ...
本文实例为大家分享了javascript实现倒计时提示框的具体代码,供大家参考,具体...
目录 读者基础 ?微服务架构梳理 https://www.coder4.com/homs_online/ ? ? 读者...
由于固态驱动器(SSD)的速度比传统的硬盘驱动器(HDD)快得多,并且价格越来越便宜...
本文实例为大家分享了vue实现按钮切换图片的具体代码,供大家参考,具体内容如下...
目录 1. C语言文件接口(库函数) 1.1 fopen 1.2 fclose 1.3 fread 1.4 fwrite 1.5...