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

HAL库I2C一次只能写入16个字节

[复制链接]
jyl518-283289 提问时间:2018-7-19 09:28 /
HAL库I2C一次只能写入16个字节,求助!!!读出的数据是正确的。

#define ADDR_24LCxx_Write 0xA0
#define ADDR_24LCxx_Read 0xA1
#define BufferSize 250
uint8_t WriteBuffer[BufferSize],ReadBuffer[BufferSize];
uint16_t i;

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  MX_USART3_UART_Init();
  MX_TIM2_Init();
  MX_I2C1_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim2);

  for(i=0; i<BufferSize; i++)
        WriteBuffer=22;         /* WriteBuffer init */

  if(HAL_I2C_Mem_Write(&hi2c1, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,WriteBuffer,BufferSize, 0x10) == HAL_OK)
        HAL_Delay(1000);
  else
       HAL_Delay(2000);   //写EEPROM时出错,只能执行到此条。

  /* read date from EEPROM */   //读正常
  HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 0x10);

HAL_Delay(1000);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

收藏 评论6 发布时间:2018-7-19 09:28

举报

6个回答
回答时间:2018-7-19 09:33:18
楼主要看你用的是什么芯片了,有的芯片页容量是不一样的。涉及到跨页的时候,需要写页地址的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

jyl518-283289 回答时间:2018-7-19 09:36:55
用的24C16 ,难道这函数不能自动跨页写的吗?

toofree 回答时间:2018-7-19 09:53:54
本帖最后由 toofree 于 2018-7-19 09:56 编辑

程序得自己写吧。
要跨页,首先你得有页大小定义吧,#define PageSize 16 傲游截图20180719095549.png

然后在程序中判断,是否跨页,如果跨页,必须发送停止位,延时5ms;然后再次指定新的写入地址,然再次写入数据。每次跨页或最后写入结束,必须加5ms的延时,这个延时手册中是Twc。
傲游截图20180719095455.png


jyl518-283289 回答时间:2018-7-19 10:01:36
谢谢各位,我以为HAL库函数可以自动跨页写的,现在明白了,跨页得自己写

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

jakecumt 回答时间:2018-7-19 10:13:51
高层的接口函数 根据不同的芯片要做修改的,得看芯片资料

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

morphlings2014 回答时间:2018-7-19 10:31:00
一般存储芯片都是分页写的,有字节限制。
然后ST的IIC库函数读写会自动设置地址的最低位,楼主可以不用特意区分读地址和写地址,只要设置元器件的地址即可。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

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