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

求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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版