查看: 1102|回复: 0

【LPC824Lite】 I2C

[复制链接]
  • TA的每日心情
    开心
    2017-6-8 21:55
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-5-10 08:56:11 | 显示全部楼层 |阅读模式
    分享到:
    这篇文章我主要来介绍一下LPC824lite I2C的功能
    1、I2C的特性如下:
    (1)独立的主机,从机和监视器功能。
    (2)支持具有从机功能的多主机和多主机。
    (3)硬件支持多个I2C从机地址
    (4)可以通过位掩码或地址范围选择一个从站地址以响应多个I2C总线地址。
    (5)通过软件协助支持10位寻址。
    (6)支持SMBus。
    (7)支持I2C总线规范,直到Fast-mode Plus(高达1 MHz)和支持数据速率400 Kbit/s
    (8)收发支持DMA
    (9)支持低功耗模式唤醒
    2、I2C0与I2C1/2/3区别:

    3、I2C时钟框图

    4、I2C功能框图

    5、初始化I2C接口:
    (1)在SYSAHBCLKCTRL寄存器中,设置相应的位使能时钟寄存器
    (2)使用PRESETCTRL寄存器清除I2C外设复位
    (3)在NVIC的中断插槽中启用/禁用I2C中断
    (4)通过开关矩阵配置I2C引脚功能 I2C的外设时钟是系统时钟




    6、配置I2C波特率:
         (1) 将系统时钟(I2C_PCLK)除以系数2。寄存器(CLKDIV,地址0x4005 0014(I2C0),0x4005
         4014(I2C1),0x40070014(I2C2),0x4007 4014(I2C3))位描述“。

    (2)将SCL高电平和低电平时间设置为2个时钟周期。“主时间寄存器(MSTTIME,地址0x4005 0024(I2C0))0x40054024(I2C1),0x4007 0024(I2C2),0x4007 4024(I2C3))位描述“

    7、I2C在主机模式下发送:
    数据写入从机:
    (1)将RW位设置为0的从站地址写入主数据寄存器MSTDAT
    (2)通过将主控寄存器中的MSTSTART位设置为1来开始发送
    (3)通过轮询STAT寄存器等待挂起状态被设置(MSTPENDING = 1)
    (4)将8位数据写入MSTDAT寄存器
    (5)通过将主站中的MSTCONT位设置为1,继续传输数据控制寄存器
    (6)通过轮询STAT寄存器等待挂起状态置1(MSTPENDING = 1)
    (7)通过将主控寄存器中的MSTSTOP位设置为1来停止发送。


    8、I2C在主机模式下接收:
    从从机读取数据:
    (1)将RW位设置为1的从站地址写入主数据寄存器MSTDAT。
    (2)通过将主控寄存器中的MSTSTART位设置为1来开始发送。
    (3)通过轮询STAT寄存器等待挂起状态被设置(MSTPENDING = 1)。
    (4)从MSTDAT寄存器读取8位数据。
    (5)通过将主控寄存器中的MSTSTOP位设置为1来停止发送。

    9、I2C在从机模式下接收/发送

    从主机读取数据:(1)通过轮询STAT寄存器等待挂起状态被设置(SLVPENDING = 1)。
    (2)通过在从控件中设置SLVCONTINUE = 1来确认(“确认”)地址寄存器
    (3)通过轮询STAT寄存器等待挂起状态被设置(SLVPENDING = 1)。
    (4)从SLVDAT寄存器读取8位数据
    (5)通过在从控件中设置SLVCONTINUE = 1来确认(“确认”)数据寄存器

    10、向主机写入数据:
      
    (1)通过轮询STAT寄存器等待挂起状态被设置(SLVPENDING = 1)
      
    (2)通过在从控制寄存器中设置SLVCONTINUE = 1来确认地址
      
    (3)通过轮询STAT寄存器等待挂起状态被设置(SLVPENDING = 1)
       
    (4)将8位数据写入SLVDAT寄存器
      
    (5)通过在从控制寄存器中设置SLVCONTINUE = 1来继续交换。
    11、  睡眠模式,任何触发I2C中断的信号都可以唤醒芯片
    配置如下:
    (1)配置I2C为主机模式或从机模式
    (2)使能NVIC寄存器的I2C中断
    (3)使能I2C中断使能寄存器INTENSET的中断
    12、Deep_sleep/Power_down模式,只能支持I2C从机模式的唤醒(因为I2C时钟被关闭)

    配置如下:
    (1)配置I2C为从机模式;使能STARTERP1寄存器中I2C唤醒中断
    (2)在PDAWAKE寄存器中,配置所有唤醒后需要正常工作的外设模块
    (3)使能NVIC寄存器的I2C中断;使能I2C中断使能寄存器INTENSET的中断
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 20:01 , Processed in 0.115614 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.