I2C1模块管脚有问题?



同样的配置方法,采用中断方式,代码是网上常见的那套,对于I2C0 PB2/PB3正常,用在I2C1 PA6/PA7或PJ0/PJ1就运行不了(其他复用I2C1管脚没测),调试发现停在while(I2C_state != STATE_IDLE);

示波器抓不到任何SDA/SCL波形,看DK-LM3S9D96_UM,Microcontroller GPIO Assignments表对PA6/PA7或PJ0/PJ1并没有做I2C功能的描述,而datasheet却有,初步怀疑是PA6/PA7或PJ0/PJ1并没有I2C复用功能,不知是否属实,大家知道的说一声哈,谢谢!

  • 你好,

            楼主的问题可能出在管脚复用的初始化配置上,在datasheet上有这样的描述:

    The number in parentheses is the encoding that must be programmed into the PMCn field in the GPIO Port Control (GPIOPCTL) register (page 444) to assign the I2C signal to the specified GPIO port pin.

    而楼主希望使用的PA6/PA7以及PJ0/PJ1在表格中是这么描述的PA6 (1),PA7 (1),以及PJ0 (11),PJ1 (11)。所以相应的括号内的数值(1或者11)要写到GPIOPCTL寄存器中去才能使能这四个管脚的I2C功能。

    希望对楼主有帮助~~~

  • 问题解决了,确实是GPIOPCTL没设置,对于I2C0 PB2/PB3来说,上电复位后GPIOPCTL默认设置PB2/PB3为I2C功能无需手动设置,而I2C1就需要手动设置。

    比较奇怪为什么TI不在GPIOPinTypeI2C函数中对GPIOPCTL设置。