查看: 4792|回复: 1

[原创] 【LPC11U68】13. I2C之单字节读写

[复制链接]
  • TA的每日心情
    擦汗
    1 小时前
  • 签到天数: 1847 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112625
    最后登录
    2025-7-20
    发表于 2018-11-14 20:26:07 | 显示全部楼层 |阅读模式
    本帖最后由 stm1024 于 2018-11-16 21:33 编辑

    I2C从设备采用的是DS3231,一款时钟芯片,之前在某宝上买的一个模块,从51时就玩过。
    以前在STM32上玩硬件I2C,总会出现这样或者那样的问题,怀疑官方库有点问题,然后Reference Manual也没写完整。
    这次在LPC上用硬件搞I2C,我倒没有太担心,比较这个协议可是nxp家自己搞出来的,如果自己都搞不好,肯定糗大了。
    首先,要具备协议本身的知识,重点是看手册上关于状态的说明,这个玩意儿才靠谱,说明了芯片的状态,以及你接下来应该做的事情。
    2018-11-14_201528.png
    其他的我就不截图了。

    LPCOpen的类库当然没问题,但是并不能说明根本问题,学习就要搞清楚每一步的流程和寄存器的状态,于是自己又撸了一下驱动代码。

    2018-11-14_201935.png

    2018-11-14_202026.png

    2018-11-14_202234.png
    2018-11-14_202438.png

    主程序:
    1. int main()
    2. {  
    3.     uint8_t sec,min,hour;
    4.    
    5.     Board_Init();
    6.    
    7.     I2C0_Init();
    8.     I2C0_WriteData(DS3231ADDR,0x02,9);//write hour
    9.     while(1)
    10.     {
    11.         sec=I2C0_ReadData(DS3231ADDR,0x00);
    12.         min=I2C0_ReadData(DS3231ADDR,0x01);
    13.         hour=I2C0_ReadData(DS3231ADDR,0x02);
    14.         hour=(hour)&0x1f;
    15.         hour=(hour>>4)*10+(hour&0x0f);
    16.         printf("%02d:%02x:%02x\r\n",hour,min,sec);
    17.         Delay_ms(997);
    18.     }
    19.     //return 0;
    20. }
    复制代码
    运行结果:
    2018-11-14_200802.png
    借用了LPCOpen上的USART0输出。以上代码也只是想说明流程,没想过去优化或者容错,例如一旦出现从机掉线或者故障,代码就会卡死等,
    这些都是在实际应用中要慎重考虑的事情。
    后面再研究一下状态值,把多字节读写也试试。


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    1 小时前
  • 签到天数: 1847 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112625
    最后登录
    2025-7-20
     楼主| 发表于 2019-2-19 11:39:03 | 显示全部楼层
    09.png 01.png 03.png 04.png 05.png 06.png 07.png 08.png 10.png


    02.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 23:56 , Processed in 0.084507 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表