历史上的今天
今天是:2025年08月09日(星期六)
2019年08月09日 | STM32F103 硬件I2C主从机通信
2019-08-09 来源:eefocus
官方例程并没有像网上大多数代码在IIC中断里面调用库函数来发,而是采用判断寄存器的值来处理数据的收发等,所以在阅读官方的的代码前最好准备stm32参考手册,主要就是SR1,SR2,这两个寄存器。
在官方例程里面默认是主机的读写,我做的是主机读取从机的内容。当然,简单改下就可以实现主机向从机写数据。

主机先使能中断和方向、地址。

之后就发送开始条件。

最后中断接收

下面从机初始化后,所有的数据接收、发送都在中断里面处理。从机发送

从机接收

最后通信成功

这是从机需要发送的数据。
哈哈哈。。。还有些函数需要再封装一下。
下一步就是在I2C总线上再挂几个单片机。
代码贴在这:
https://download.csdn.net/download/changshengxiao/10989174
这个是VL53L0X的keil mdk 的工程文件:
https://download.csdn.net/download/changshengxiao/10997790
这两天我又试了下在I2C总线上面挂两个单片机,但是主机接收的数据不对,而单独对一块单片机读取的数据没有问题,后来改了两个从机地址数据才读出来,开始两个从机地址分别是0x30,0x31后面改成了0x30,0x40(后来实验,0x32,0x33都行),强烈建议多从机地址一定不要连续,中间最好隔几个。期间又试了下HAL库的I2C,没有读出数据,希望知道的朋友告知一下。
这是stm32f103zet6作为主机,两片stm32f103c8t6作为从机各自控制VL53L0X测距传感器,发送到主机的图片。

注意主从机之间的I2C总线上拉电阻我用的是4.7K,电源是3.3V(之前电源接的是5V,后面硬件电路动了一下后,主机死活收不到数据,后来点对点测试的时候发现电源接3.3V可以)。
上一篇:STM32 I2C从机发送数据
史海拾趣
|
DSP5509实例视频教程,欢迎大家免费下载。 电驴下载地址:http://www.verycd.com/topics/2788098/ QQ中转站下载:QQ号码1353686381 ,密码weierda DSP5509开发板视频教程目录 第一讲 CCS安装与建立第一个helloworld程序 43.06’ ...… 查看全部问答> |
|
IPerf在WinCE ARMV4I下运行提示缺少component或相关libraries 想要测Wi-Fi模块的带宽, 在网上Down了一个IPerf源代码,板子上用的是ARMV4I, 编译器选ARMV4I, Build后,把iperf.exe copy到板子上运行, 错误提示:\"Cannot find \'IPERF\' (or one of its components). Makesure the path and filename are corr ...… 查看全部问答> |
|
STM32F定时器的功能非常丰富,像我这样单纯的TIM2定时器溢出中断人恐怕不多了,所以找例子资料也找不到费了九牛二虎之力终于杜撰出来了,发帖庆祝!我这里用了ST新版的STM32F FWLIB2.0库,用到的函数都添加了中文注释。IAR编译的项目传不 ...… 查看全部问答> |
|
9款LED照明的驱动IC和T8 LED灯管变压器样品免费申请 为满足在LED领域工作的一线工程师和LED 技术发烧友的需求,电子元件技术网特意为大家组织开展了一个免费样品申请活动。通过电子元件技术网这个平台大家可以申请到知名企业的生产的最新LED产品的样品 ...… 查看全部问答> |
|
深圳市中软创芯电子有限公司是一家以工控系统及设备为主的生产加工,产品开发型公司。主要开发:控制器、工业自动化控制器、家电控制器、运动控制器、电子产品程序开发,电子软件开发,单片机程序开发,等电子产品。已经成为一家在电子电工电气行业 ...… 查看全部问答> |




