T z
/
I2C_AT24C02
I2C with AT24C02
Fork of I2C_on_mbed_AT24cxxx by
Diff: main.cpp
- Revision:
- 0:a9d57902bf67
- Child:
- 3:488563715282
diff -r 000000000000 -r a9d57902bf67 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Feb 05 03:16:51 2015 +0000 @@ -0,0 +1,88 @@ + +#include "mbed.h" + +#define DEV_ADDR 0xA0 + +I2C i2c(P0_29, P0_28); +Serial pc(USBTX, USBRX); + +/********************************************************************** +* @brief : Write data to AT24C512 +* +* @param[in] addr : The address of stored +* @param[in] *pbuf : The pointer of data +* @param[in] length : The length of data +* +* @return none +**********************************************************************/ +void AT24C512_WriteBytes(uint16_t addr, uint8_t *pbuf, uint16_t length) +{ + char buf[length+2]; + buf[0] = (uint8_t)(addr>>8); + buf[1] = (uint8_t)(addr); + memcpy(&buf[2], pbuf, length); + i2c.write(DEV_ADDR, buf, length+2, false); +} +/********************************************************************** +* @brief : Read data from AT24C512 +* +* @param[in] addr : The address of read in AT24C512 +* @param[out] *pbuf : The pointer of buffer +* @param[in] length : The length of data +* +* @return none +**********************************************************************/ +void AT24C512_ReadBytes(uint16_t addr, uint8_t *pbuf, uint16_t length) +{ + char buf[2]; + buf[0] = (uint8_t)(addr>>8); + buf[1] = (uint8_t)(addr); + i2c.write(DEV_ADDR, buf, 2, false); + + i2c.read(DEV_ADDR, (char *)pbuf, length, false); +} + + +uint8_t w_buf[11]={'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd', '!'}; +uint8_t r_buf[11]; + + +int main(void) +{ + uint8_t index; + + pc.baud(9600); + pc.printf("IIC Demo Start \r\n"); + + while(1) + { + wait(2); + AT24C512_WriteBytes(0, w_buf, 11); + wait(0.5); + AT24C512_ReadBytes(0, r_buf, 11); + for(index=0; index<11; index++) + pc.putc(r_buf[index]); + + pc.printf("\r\n"); + } +} + + + + + + + + + + + + + + + + + + + +