stm32驱动_I2C专题(二)—— STM32驱动AT24C02

0ce251a8a1aa5fff9afb5e3b0d0b036f.png

1. 概述

MiniSTM32 开发板板载的 EEPROM 芯片型号为 24C02。该芯片的总容量是 256个字节,该芯片通过 I2C 总线与外部连接。这里直接采用原子板上的 AT24C02 ,主要是软件编程方面的学习。

2. 硬件连接

b3b0938cdc84437895fd9907c5e749d2.png

A2、A1、A0 三个引脚直接接地。供电:(VCC = 2.7V to 5.5V)

器件地址设置:

a5c158b200287e2b0982651f3ff2cc33.png

对于AT24C02:Addr--->0xA0(写)/ 0xA1(读)。

单字节写入:

b2e077051b298edd1988f172e506a4ca.png
//--------------------------------------------------------------------------------------------------------------------------//    函 数 名: ee_at24cxx_write_byte//    功能说明: eeprom写一个字节数据//    形    参:     write_addr:写入地址//              write_byte:写入数据//    返 回 值: 无//    日    期: 2020-03-22//    备    注: eeprom小于16K bits//    作    者: by 霁风AI//--------------------------------------------------------------------------------------------------------------------------bool ee_at24cxx_write_byte(uint16_t write_addr, uint8_t write_byte){
    
    I2c_Start();
    I2c_SendOneByte(AT24CXX_ADDR | ((write_addr / 256) <1));    //发送设备地址+数据地址高3位(<16K:1010 + p2p1p0 + r/w)
    if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
    {
        return false;
    }
    I2c_SendOneByte(write_addr % 256);    //设备地址低8位
    if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
    {
        return false;
    }

    I2c_SendOneByte(write_byte);    //写入的数据
    if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
    {
        return false;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值