更多资料见:御坂网络驱动-AT24CXX | xqyjlj
御坂网络驱动-AT24CXX 软件包提供了 at24cxx 系列 EEPROM 全部功能(带页写算法)。 目前已在 at24c02,at24c04, at24c512 验证通过。
名称 | 说明 |
---|---|
Examples | 例程 |
Misaka_at24cxx.h | EEPROM 使用头文件 |
Misaka_at24cxx.c | EEPROM 使用源代码 |
Misaka_at24cxx_port.c | EEPROM 移植文件 |
README.md | 驱动使用说明 |
at24cxx_datasheet.pdf | 官方数据手册 |
AT24C512C.pdf | 官方数据手册 |
御坂网络驱动-AT24Cxx 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。
依赖 RT-Thread I2C
设备驱动框架,或者misaka御坂框架
。
移植非常简单。
只需要在Misaka_at24cxx_port.c
文件中将所需要实现的接口实现即可。
static uint16_t i2c_send_then_recv(uint8_t address, uint8_t* txbuf, uint32_t txlen, uint8_t* rxbuf, uint32_t rxlen);
i2c 发送后再接收
参数 | 描述 |
---|---|
address | 地址 |
txbuf | 待发送的数据 |
txlen | 待发送的数据长度 |
rxbuf | 待接收的数据 |
rxlen | 待接收的数据长度 |
返回 | |
0 | 成功 |
1 | 失败 |
static uint16_t i2c_send_then_send(uint8_t address, uint8_t* txbuf1, uint32_t txlen1, uint8_t* txbuf2, uint32_t txlen2);
i2c 发送后再发送
参数 | 描述 |
---|---|
address | 地址 |
txbuf1 | 待发送的数据 1 |
txlen1 | 待发送的数据 1 长度 |
txbuf2 | 待接收的数据 2 |
txlen2 | 待接收的数据 2 长度 |
返回 | |
0 | 成功 |
1 | 失败 |
static void delay_ms(uint16_t ms);
延时函数,单位为 1ms
static void mutex_take();
获取互斥量,如果为裸机系统,空函数即可
static void mutex_release();
释放互斥量,如果为裸机系统,空函数即可
Misaka_at24cxx_t misaka_at24cxx_port_init()
此函数需自己调用
Misaka_at24cxx_t misaka_at24cxx_port_init()
{
misaka_at24cxx_obj.type = MISAKA_AT24C04;
misaka_at24cxx_obj.isFRAM = 0;
misaka_at24cxx_obj.mutex_release = mutex_release;
misaka_at24cxx_obj.mutex_take = mutex_take;
misaka_at24cxx_obj.delay_ms = delay_ms;
misaka_at24cxx_obj.i2c_send_then_recv = i2c_send_then_recv;
misaka_at24cxx_obj.i2c_send_then_send = i2c_send_then_send;
misaka_at24cxx_obj.address = 0x50;
Misaka_at24cxx_init(&misaka_at24cxx_obj);
return &misaka_at24cxx_obj;
}
void Misaka_at24cxx_i2c_error_callback()
此函数在i2c发生错误时会调用。