CCS5.4+Proteus8的F28027实践课十三、I2C

本文介绍了使用CCS5.4和Proteus8进行F28027芯片的I2C通信编程。内容包括I2C主要涉及的寄存器、操作步骤,以及初始化函数、GPIO设置、发送和接收子程序的编写。通过程序测试验证了方法的有效性,并提供了简单的I2C学习总结。
摘要由CSDN通过智能技术生成

今晚我们来学习I2C的编程,呵呵,还是老规矩,最简单的非中断回环测试。
先来总体看下寄存器结构
I2C
I2C
其实对于我们今晚的主题来讲,主要用到了I2COAR、I2CSTR、I2CCLKL、I2CCLKH、I2CDRR、I2CDXR、I2CMDR、I2CPSC这几个寄存器,详细的寄存器介绍大家自己下去看,我们就不浪费时间说这个了。
然后我们来理一下操作步骤:
1、使能外设I2C时钟(这步非常重要,也很容易忽略);
2、在复位状态下,设置I2C时钟PSC、I2CCLKL、I2CCLKH,还要设置地址信息和回环模式;
3、使能I2C;
4、设置I2C相关引脚;
5、编写发送和接收函数,在这里需要注意的是,TRX这位的值,当为0时,是接收模式;为1时,是发送模式;

好了,思路大概就这样,刚刚去写程序测试了一把,是OK的,我直接贴程序了
首先是I2C的初始化函数

void InitI2C()
{
     EALLOW;

     SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1;

     I2caRegs.I2COAR=0x003f;  //7-bit addressing

     I2caRegs.I2CMDR.bit.IRS = 0;
     I2caRegs.I2CMDR.bit.DLB=1;

     I2caRegs.I2CPSC.all = 5;   //  7M <= 60M/(PSC+1)  <=12M
     I2caRegs.I2CCLKL = 15;
     I2caRegs.I2CCLKH = 15;
     I2caRegs.I2CMDR.bit.IRS = 1;

     EDIS;
}

然后是GPIO引脚设置

void InitI2CGpio()
{

   EALLOW;

/* Enable internal pull-up for the selected pins */
// Pull-ups can be enabled
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值