你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求I2C从机代码

[复制链接]
ctang 提问时间:2017-9-28 14:45 /
已经有I2C主机代码,无论硬件还是软件模拟的用起来都还可以。在这里求I2C从机的代码,硬件最好是用HAL库的,因为我用的是L0系列的板子。软件模拟的也可以。
下面是我现在勉强用的硬件I2C从机代码,有个问题是,RxBuffer只能接收到一个字节的,即使把接收长度修改成其他。用示波器看了时序什么的都是对的。
  1. //    /*##-2- Slave receive request from master ################################*/
  2.     while(HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)&bTransferRequest, 1)!= HAL_OK){ }
  3.    
  4.     while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY)
  5.     {                /* Refresh IWDG: reload counter */
  6.       if(HAL_IWDG_Refresh(&hiwdg) != HAL_OK)
  7.       {
  8.         /* Refresh Error */
  9.       }
  10.     }

  11.     /* If master request write operation #####################################*/
  12.     if (bTransferRequest == MASTER_REQ_WRITE)
  13.     {
  14.       /*##-3- Slave receive number of data to be read ########################*/
  15.       while(HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)®Address, 1)!= HAL_OK);      
  16.       while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY){ };
  17.       
  18.       /*##-4- Slave receives aRxBuffer from master ###########################*/
  19.       while(HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)aRxBuffer, 1)!= HAL_OK);
  20.       while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY){ };
  21. }
复制代码


收藏 评论6 发布时间:2017-9-28 14:45

举报

6个回答
MrJiu 回答时间:2017-9-28 15:21:06
CubeMX不可以配置么?
ctang 回答时间:2017-9-28 15:28:05
MrJiu 发表于 2017-9-28 15:21
CubeMX不可以配置么?

上面代码就是来自官方例程。CubeMX配置的,只有Init,没有例程详细。
斜阳__ 回答时间:2017-9-28 16:34:16
帮顶     
MrJiu 回答时间:2017-9-29 09:37:32
ctang 发表于 2017-9-28 15:28
上面代码就是来自官方例程。CubeMX配置的,只有Init,没有例程详细。

从机大家用的都不多,估计很难有!!!!
奏奏奏 回答时间:2017-9-29 11:10:21
https://www.stmcu.org.cn/module/forum/thread-610058-1-1.html
请参考我之前发的分享贴子
因为用CubeMX配置的,很容易移植到L0系列上,有主机与从机的通讯源代码

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ctang 回答时间:2017-9-29 13:42:26
奏奏奏 发表于 2017-9-29 11:10
https://www.stmcu.org.cn/module/forum/thread-610058-1-1.html
请参考我之前发的分享贴子
因为用CubeMX配置的 ...

我下载了你的代码,看了下。里面是的I2C从机发送代码,一次发送一个字节的数据。

但我想要解决的问题是:I2C从机接收代码,接收主机发来的是读请求还是写请求,接收主机连续发送多个字节数据。

我目前用CubeMX还是官方例程,实验的结果是I2C从机只能接收到一次性一个字节,而且接收不到读写请求控制位。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版