金牌会员
 
- 积分
- 2099
- 金钱
- 2099
- 注册时间
- 2017-2-11
- 在线时间
- 306 小时
|
本帖最后由 jiangyy 于 2021-6-3 23:06 编辑
分享最近调试ERROM的IIC时序及代码:
1.配置图
2.代码
- #include "bsp_errom.h"
- #include "bsp_delay.h"
- #include "r_cg_serial.h"
- #include "stdlib.h"
- #include "string.h"
- void FM24CL64MultiByteRead(uint8_t *pBuffer,uint8_t ReadAddr, uint16_t NumToRead)
- {
- R_IICA0_Master_Send(ERROM_ADDR, &ReadAddr, 1, 200);
- delay_ms(1);
- R_IICA0_Master_Receive(ERROM_ADDR, pBuffer, NumToRead, 200);
- delay_ms(1);
- }
- void FM24CL64MultiByteWrite(uint8_t *pBuffer, uint8_t WriteAddr, uint16_t NumToWrite)
- {
- uint16_t i,j;
- uint8_t *array = (uint8_t*)malloc(NumToWrite+1);
- memset(array, 0, NumToWrite+1);
- *array = WriteAddr;
- for(i=0;i<NumToWrite;i++)
- {
- array[i+1]= pBuffer[i];
- }
- R_IICA0_Master_Send(ERROM_ADDR, array, NumToWrite+1, 200);
- delay_ms(1);
- free(array);
- }
- uint8_t iic_txbuf[10] = {0,};
- uint8_t iic_rxbuf[10] = {0,};
- void errom_test(void)
- {
- uint8_t i = 0;
- for(;i<10;i++)
- iic_txbuf[i] = 0x55;
- FM24CL64MultiByteWrite(iic_txbuf,0x55,10);
- delay_ms(2);
- FM24CL64MultiByteRead(iic_rxbuf,0x55,10);
-
- R_UART0_Send(iic_rxbuf, 10);
- }
复制代码 3.调试结果
为了避免malloc()和free()造成内存碎片,可以使用下面代码
- #include "bsp_errom.h"
- #include "bsp_delay.h"
- #include "r_cg_serial.h"
- #include "string.h"
- void FM24CL64MultiByteRead(uint8_t *pBuffer,uint8_t ReadAddr, uint16_t NumToRead)
- {
- R_IICA0_Master_Send(ERROM_ADDR, &ReadAddr, 1, 200);
- delay_ms(1);
- R_IICA0_Master_Receive(ERROM_ADDR, pBuffer, NumToRead, 200);
- delay_ms(1);
- }
- uint8_t FM24CL64MultiByteWrite(uint8_t *pBuffer, uint8_t WriteAddr, uint16_t NumToWrite)
- {
- uint16_t i,j;
- uint8_t buf[20];
-
- if(NumToWrite > 20)
- return 1;
- memset(buf, 0, 20);
-
- *buf = WriteAddr;
- for(i=0;i<NumToWrite;i++)
- {
- buf[i+1]= pBuffer[i];
- }
- R_IICA0_Master_Send(ERROM_ADDR, buf, NumToWrite+1, 200);
- delay_ms(1);
- return 0;
- }
- uint8_t iic_txbuf[10] = {0,};
- uint8_t iic_rxbuf[10] = {0,};
- void errom_test(void)
- {
- uint8_t i = 0;
- for(;i<10;i++)
- iic_txbuf[i] = 0x55;
- FM24CL64MultiByteWrite(iic_txbuf,0x55,10);
- delay_ms(2);
- FM24CL64MultiByteRead(iic_rxbuf,0x55,10);
-
- R_UART0_Send(iic_rxbuf, 10);
- }
复制代码
|
|