基于STM32Cube的IIC主从通信

1、建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的一致性),如下图所示。 
                                                                                       
2、配置完RCC时钟,F429最高时钟频率是180M,另外要注意自己使用的外接晶振的频率;
3、下面重点介绍I2C配置:
                                     
             I2C有两种模式,快速模式(400KHz),标准模式(100KHz),并且作为从机时候具有双应答地址的功能,地址长度也分为7-bit         和10-bit,在测试用例中,我选择快速模式,频率为默认400KHz,7-bit地址长度。
                                     
           使能DMA和I2C终端,首优先级均为5,这个可以在NVIC选项中自由设置。
                                   
        DMA的设置在这里最为重要,无论是RX还是TX,均要选择内存地址递增模式,并且是单字节递增,而外设地址则为初始的不递增。这里不选择的话,就算通信成功也只能重复发送第一个字节数据。

4、生成代码,这里选择Keil5;
5、生成代码之后,加载了FreeRTOS实时操作系统,但是代码此时还不能用。这个是ST公司的一个固件库bug,需要在stm32f4xx_it.c文件的SysTick_Handler函数中添加语句  HAL_IncTick();
                      
因为I2C使用了超时机制,而此超时机制需要提供系统滴答时钟。
6、如果做为主机,则使用HAL_I2C_Master_Transmit_DMA语句,就可以利用DMA自动发送数据,从机使用HAL_I2C_Master_Receive_DMA语句自动接收数据。


7、测试结果,使用串口将I2C从机接收到“Hello World”打印出来,两个429芯片管脚都接PB6,PB7。
                        
                        
                       

祝各位使用顺利。






转载于:https://www.cnblogs.com/121792730applllo/p/5044920.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值