关于I2C从机通讯的问题

2019-03-23 19:34发布

各位大神,求助啊,我没玩过I2C,这是我东拼西凑些的I2C从机代码,主要是完成和主机的通讯用的。但是先在问题出来了,代码运行时,主机向0xA0发送一个数据,
从机能进中断( I2C2_EV_IRQHandler)函数,在switch (I2C_Event)这一句时,I2C各个寄存器函数如下:
图片看不到.............算了,手打

I2C2_CR1            0x00000401
I2C2_CR2            0x00000624   
I2C2_OAR1          0x000040A0
I2C2_OAR2          0
I2C2_DR              0
I2C2_SR1            0x00000110
I2C2_SR2            0
I2C2_CCR           0x0000801E
I2C2_TRISE         0x0000000B

[ 本帖最后由 lifeissweet66 于 2012-9-13 14:47 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
lifeissweet66
2019-03-24 06:01
关于主函数我说明下,在 I2C2_EV_IRQHandler中最前面几个case是我测试最后进入哪儿用的,经测试,每次都是死在case 0x20110上,然后我返回去进入I2C_GetLastEvent(I2C2)中计算了下:
            他有三个标志位:flag1,flag2,lastevent
            flag1 = I2C->SR1
            flag2 = I2C ->SR2
            flag2 = flag2 << 16
            lastevent = (flag1 | flag2 ) & 0x1F
            return lastevent;
把最上面的寄存器值代入我计算了下lastevent = 0x20110

一周热门 更多>