STM32L151 I2C从机实现

这篇博客介绍了如何在STM32L151上实现I2C从机模式,指出库接口仅能实现单一的发送或接收,而通过中断方式则能轻松实现收发兼备。作者建议使用STM32CubeMX生成基础DEMO,配置从机地址,并重写I2C1_EV_IRQHandler中断函数,以处理多字节的数据传输。
摘要由CSDN通过智能技术生成

    网上很多STM32的I2C都是基于F系列去实现的,其他的系列的芯片实现很少。

    而对于STM32L151系列的I2C从机设计,用STM32CubeMX生成的简单DEMO里,就会有提供库接口实现,比如:

    HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);

    HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);

   但其实,如果是调用库接口,只能实现从机接收或者是只实现从机发送实现,调用现成接口貌似很难做到既接收有发送(至少个人没有试验出来大哭)。

    不过如果使用中断,实现起来就非常简单了。

    首先使用STM32CubeMX生成一个简单的I2C demo,设置在MX_I2C1_Init接口里面设置好从机的一些基本信息(从机地址,使用几位从机地址等);

/* I2C1 init function */
void MX_I2C1_Init(void)
{

  hi2c1.Instance = I2C1;
  hi2c1.Init.ClockSpeed = 100000;
  hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
  hi2c1.Init.OwnAddress1 = 0x90;
  hi2c1.Init
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值