基于单板使用Cube_MX实现两个IIC的主从通信

目录

一、IIC简介

二、IIC主要特性

三、Cube_MX的配置

四、总结


一、IIC简介

I 2 C (内部集成电路)总线接口用作微控制器和 I 2 C 串行总线之间的接口。它提供多主模式功
能,可以控制所有 I 2 C 总线特定的序列、协议、仲裁和时序。

二、IIC主要特性

主模式特性:

时钟生成、起始位和停止位生成
tips:
      起始位:当SCL为高电平时,SDA由高电平变为低电平
      停止位:当SCL为高电平时,SDA由低电平变为高电平
从模式特性:
IIC地址检测、停止位检测

IIC通信分为主发从收、从发主收两种模式,这里主要演示如何使用Cube_MX完成配置IIC通信 ,具体IIC通信协http://t.csdn.cn/2Vknl(因工作需要,自己自学的,仅作为经验分享使用)


三、Cube_MX的配置

这是打开Cube_Mx的主界面,第一个时选择MCU核,第二个是选择ST板子。(每次新建工程,选择核的时候都会重新load,这个问题有知道怎么解决的吗?)

 

题主这里选择的是F401的板子,选择完成后,点击Start Project即可

 文件创建完成后就可以开始配置需要的功能

 选择IIC1做主(在Cube里不用分主从,跟spi不一样),参数配置这一栏从上到下,分别是选择标准模式/快速模式;标准模式最大时钟频率100K、快速模式最大时钟频率400K;可选时钟延长;7位/10位寻址;双地址应答;从机地址设置;通用呼叫地址检测。

对于主模式的配置,根据自己需要进行配置即可,题主这里只是实现最基本的主发从收,保持默认即可。

IIC的实现方式有轮询、中断、DMA三种,题主这里选择中断方式,打开事件中断即可 

IIC3作为从机同IIC1配置,但需要设置从机地址,这里设置地址为0x72并打开对应事件中断

 IIC两根线需要上拉,所以需要打开对于端口的内部上拉

至此,Cube_MX实现IIC通信配置完成。

选择生成文件类型为MDK_ARM,这样可以使用Keil打开并继续编辑代码。点击GENERATE CODE 生成以后,点击Open Project 

 用keil打开代码后,在main.c这个位置修改需要发送的数据 

选择中断方式实现IIC的函数,将主发从收配置完成,这里主机发出的地址是0xe4,而我们在Cube_MX上配置的从机地址是0x72,不是写错了,是因为

将0x72写进去以后,还会在ADD0 bit0处补1位,所以实际在IIC3地址寄存器中设置的地址是0xe4

而Cube_MX生成的IIC3初始化函数部分会自动将地址补全,如下图所示 

至此,IIC主发从收配置完成,将代码下载到板子上run

 如图所示,IIC3作为从机正确收到主机发送的数据,也可以使用逻辑分析仪解析IIC通信协议,正确设置后解析结果如下


四、总结

        总体来说,IIC各模式通信,使用HAL库实现更方便快捷,选用正确库函数,正确配置所需模式、时钟即可 。

tips:

        更改Cube_MX再重新generate新的代码用keil打开时,可能会遇到卡死的现象,解决办法是,在生成代码之前把之前的keil关闭,就不会卡死了。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32F103是一款基于ARM Cortex-M3内核的微控制器,具备硬件IIC(Inter-Integrated Circuit)功能,可以实现主从设备之间的通信。 硬件IIC通信是一种串行通信协议,通常用于短距离的设备之间的通信。它需要两根信号线:SDA(数据线)和SCL(时钟线)。在IIC通信中,一个设备充当主设备,控制整个通信的进行,而其他设备则充当从设备,等待主设备的命令。 在STM32F103中,可以通过配置相关寄存器和使用相应的库函数来实现IIC通信。作为主设备,我们需要首先初始化IIC总线,并设置相应的通信速率。然后,我们可以通过发送起始信号、选择从设备地址和读写操作来与从设备进行通信通信过程中,主设备可以通过发送或接收数据来完成数据的传输。 作为从设备,我们首先需要等待主设备选择我们的地址。当地址匹配时,我们可以通过拉低SDA线来发送应答信号,表示已经准备好进行通信。在收到数据后,我们可以发送应答信号,告知主设备数据已经接收完毕。 硬件IIC通信是一种简、高效的通信方式,适用于需要短距离、低速率的设备之间的通信。在使用STM32F103进行硬件IIC主从通信时,我们需要合理配置主设备和从设备的相关参数,并遵循IIC通信的协议来进行通信。 总之,STM32F103通过硬件IIC功能,可以实现主从设备之间的通信。通过合适的配置和使用相应的库函数,我们可以轻松地实现IIC通信,并实现数据的传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值