您的位置 首页 FPGA

有关I2C设计时应留意的细节问题

1,在硬件设计时,要注意SCL和SDA线要加10K的上拉电阻,因为其端口配置内部没有上拉电阻,要不然两端口在初始状态下为低电平,在软件操作I2…

1,在硬件规划时,要留意SCL和SDA线要加10K的上拉电阻,由于其端口装备内部没有上拉电阻,要不然两端口在初始状况下为低电平,在软件操作I2C总线置STA信号时是不会有反响的。

2,要留意查看下功率操控寄存器PCONP相应位,保证该功用模块是翻开的。

3 假如依据I2C状况字进行相应处理选用中止方法的话,还应中止的相关设置。

【1】关于LPC21xx,I2C初始化应该如下:

static void BSP_I2C_Init(CPU_INT32U fi2c)
{
CPU_INT32U Fpclk = BSP_CPU_PclkFreq();

//PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; // 设置I2C操控口有用
PINSEL0_bit.P0_2 = 1;//设置I/O口作业形式,运用I2C0口,P0.2,P0.3和UART0的P0.0,P0.1。其他口为GPIO口
PINSEL0_bit.P0_3 = 1;

PCONP_bit.PCI2C = 1; //装备PCONP功率模块使能I2C
if(fi2c>400000) fi2c = 400000;

I2SCLH = (Fpclk/fi2c + 1) / 2;//高电平占空比寄存器
I2SCLL = (Fpclk/fi2c) / 2; //低电平占空比寄存器
//装备成I2C主形式
I2CONCLR = STA|SI|AA|STO; //分别为:开始标志(STA)|I2C中止标(SI)|应对标志(AA)|中止标志(STO)
I2CONSET = I2CEN; //I2EN=1,使能I2C功用


// 设置I2C中止答应
VICIntSelect &= ~(1 << VIC_I2C);// 设置一切通道为IRQ中止
VICVectCntl4 = 0x20|VIC_I2C;// I2C通道分配到IRQ slot 0,即优先级最高
VICVectAddr4 = (CPU_INT32U)I2C_IRQ_ISR_handler; // 设置I2C中止向量地址
VICIntEnable |= (1 << VIC_I2C); // 使能I2C中止
}

留意上面蓝色粗体部分,搞错了就不会进入中止或许导致其它中止源进入中止,VIC_I2C为通道号,细节参阅其用户手册。

【2】发动I2C总线,代码如下:

I2CONCLR = STA|SI|AA; //0x2C; //开始标志(STA)|I2C中止标(SI)|应对标志(AA)
I2CONSET = I2CEN|STA; //0x60; //I2C接口使能,设置为主机,并发动总线
//I2CONSET = STA; //置位 STA进入I2C主发送器形式,发动发送START脉冲
while(0==I2C_end); //等候中止
if(1==I2C_end) return(1);
else return(0);

只要设置的开始标志位,才干发动I2C总线。

上面的代码是参阅周建功官网的试验例程,蓝色字体是做的修正。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/262691.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部