完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求:想用存入一组数据32位;然后相对应的位置读出相关内容; 只存16个的时候可以存入但大于16的时候数据就没法存入;还请教给完大神。
部分代码;如何把这组数据全部存入和相对应的读出来 I2C_WriteBuffer[0]= 0; I2C_WriteBuffer[1] = 1; I2C_WriteBuffer[2]= 2; I2C_WriteBuffer[3] = 3; I2C_WriteBuffer[4]= 4; I2C_WriteBuffer[5] = 5; I2C_WriteBuffer[6]= 6; I2C_WriteBuffer[7] = 7; I2C_WriteBuffer[8]= 8; I2C_WriteBuffer[9] = 9; I2C_WriteBuffer[10]= 10; I2C_WriteBuffer[11] = 11; I2C_WriteBuffer[12]= 12; I2C_WriteBuffer[13] = 13; I2C_WriteBuffer[14]= 14; I2C_WriteBuffer[15] = 15; //5通道 I2C_WriteBuffer[16]= 16; I2C_WriteBuffer[17] = 17; I2C_WriteBuffer[18]= 18; I2C_WriteBuffer[19] = 19; I2C_WriteBuffer[20]= 20; I2C_WriteBuffer[21] = 21; I2C_WriteBuffer[22]= 22; I2C_WriteBuffer[23] =23; I2C_WriteBuffer[24]= 24; I2C_WriteBuffer[25] = 25; I2C_WriteBuffer[26]= 26; I2C_WriteBuffer[27] = 27; I2C_WriteBuffer[28]= 28; I2C_WriteBuffer[29] = 29; I2C_WriteBuffer[30]= 30; I2C_WriteBuffer[31] = 31; for(i = 0; i<32; i+=8){ HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, i, I2C_MEMADD_SIZE_8BIT,&I2C_WriteBuffer,8,0xff); } //读 HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,&I2C_ReadBuffer[0],32, 0xff); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("I2C_ReadBuffer "); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); for(i=0; i<32; i++) { printf("0x%02X ",I2C_ReadBuffer); } |
|
相关推荐
6个回答
|
|
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
printf("rn EEPROM 24C02 Write rn"); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); for(i = 0;i<32;i++){ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("0x%02X ",I2C_WriteBuffer); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); } //------------------------------ //HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,I2C_ReadBuffer,BufferSize, 0x10); //读 // HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 1, I2C_MEMADD_SIZE_8BIT,&I2C_ReadBuffer[8],8,0x10); if( HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,I2C_ReadBuffer,32,0x10) == HAL_OK){ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("rn EEPROM 24C02 READ0 rn"); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); for(i = 0;i<32;i++){ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("0x%02X ",I2C_ReadBuffer); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); } } 这个存入后,读出来第16位和7重复了 EEPROM 24C02 Write 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F EEPROM 24C02 READ0 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x11 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F |
|
|
|
写的时候要注意下,换page的时候要等5ms,读的时候可以一次性读
|
|
|
|
我这样存 老是存不了后面的16个数组 下面是我存入和读取方法 是哪里不正确;存入我加入延时就读取不了 //存入EEprom if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,&I2C_WriteBuffer[0],16, 0x10) == HAL_OK) { } else { } //HAL_Delay(500); if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, 2, I2C_MEMADD_SIZE_8BIT,&I2C_WriteBuffer[16],16, 0x10) == HAL_OK) { } else { // } //读------------------------------ if( HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,I2C_ReadBuffer,32,0xFF) == HAL_OK){ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("rn EEPROM 24C02 READ0 rn"); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); for(i = 0;i<32;i++){ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); printf("0x%02X ",I2C_ReadBuffer); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); } |
|
|
|
|
|
|
|
谢谢; 还想请教下 IIC_TX_BUSY 和 IIC_TX_FREE 这两个是如何定义的 |
|
|
|
这样也行,太创意了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1285 浏览 1 评论
1019 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
640 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1571 浏览 2 评论
1797 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 23:07 , Processed in 0.645578 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号