您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI C6000 DSP和ARM >> OMAP-L1x处理器 >> 正文
  [图文]OMAPL138的I2C寄存器简记           ★★★ 【字体:
OMAPL138的I2C寄存器简记
作者:xjf616    文章来源:xjf616    点击数:    更新时间:2013-10-24    

I2C初始化主要是配置I2C总线时钟

主要包括复位ICMDRIRS位,配置时钟ICPSCICCLKL,ICCLKH,置位ICMDRIRS

整体架构查看datasheetIntroduction

EVMOMAPL138_lpscTransition(PSC1, DOMAIN0, LPSC_I2C1, PSC_ENABLE);

//PSC中使能I2C1

EVMOMAPL138_pinmuxConfig(PINMUX_I2C1_REG,,PINMUX_I2C1_MASK,PINMUX_I2C1_VAL);

//复用I2C1管脚

i2c->ICMDR = 0;

//重启ICMDR寄存器,配置I2C时钟时,ICMDR寄存器中的IRS位必须处于reset状态。

i2c->ICPSC = 2;     //得到MUST8M

//I2C总线时钟源使用系统提供的AUXCLK,即直接采用板上晶振提供的24M。经过I2C prescalerI2Cclock dividers两重分频得到I2C总线时钟,ICPSC寄存器中的PSC位控制I2C prescalerICCLKL中的ICCL位、ICCLKH中的ICCH位控制I2Cclock dividers。最终得到I2C总线时钟。


i2c->ICCLKL = 5;

i2c->ICCLKH = 5;

//最终配置I2C总线频率为400K

SETBIT(i2c->ICMDR, IRS);

//配置完成,ICMDRIRS位职位使能I2C,初始化结束。

 

I2C写命令/数据

先判断总线忙碌状态,配置传送地址和数据量,配置发送模式,开始信号,赋值寄存器,结束信号

while (CHKBIT(i2c->ICSTR, BB)) {}

//判断总线忙碌状态,如果BB位为零,则处于free状态

i2c->ICCNT = in_length;

i2c->ICSAR = in_addr;

//配置传送数据量大小和传送地址,当I2C处于主机模式(ICMDR寄存器中MST=1TRX=1/0 ),且重复模式无效(ICMDR寄存器中的RM位为0

i2c->ICMDR = STT | MST | ICMDR_FREE | TRX | IRS;

//配置ICMDR寄存器,STT置为触发I2C总线的开始信号,MST处于主模式,ICMDR_FREE表示当有I2C中断信号时不触发仍正常运行。TRX处于发送模式,IRS使能I2C总线。

i2c->ICDXR = src_buffer[i];

//把数据赋给发送寄存器

while (!CHKBIT(i2c->ICSTR, ICXRDY));

//检查是否发送完毕

SETBIT(i2c->ICMDR, STP);

//触发I2C总线的结束信号。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    ubifs文件系统的移植
    DSP/BIOS的HWI线程应用
    OMAPL138的uPP通信(1)---DSP…
    OMAPL138的uPP通信(2)---F…
    基于OMAPL138的linux内核移植
    OMAPL138 ubifs文件系统移植…
    GDBSERVER 用于OMAPL138调试…
    OMAPL138的DVSDK安装与使用(…
    OMAPL138的DVSDK安装与使用(…
    OMAPL138的DVSDK安装与使用(…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2