请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8335万 主题:PCA9534中讨论的其他部件
我有一个为I2C模块编写的驱动程序,该模块似乎正在向PCA9534端口扩展器发送正确的数据,但我很难让I2C中断正常工作。 下面是我的INIT函数,请告诉我我会做什么错误。
void I2CA_Init(void){ I2CBusReset(); // I2C线路的I/O控制以强制总线重置(11个时钟,然后是停止条件) I2caRegs.I2CMDR.bit.IRS = 0;//重置I2C模块 I2caRegs.I2CPSC.ALL = 127; //预分频器-设置为高,因此数据速度较低,可以在我的示波器 InitI2CGpio()中看到; I2caRegs.I2CCLKL =10; //注意:必须为非零 I2caRegs.I2CCLKH = 5; //注:必须为非零 I2caRegs.I2CIER.bit.ARDY = 1;//启用基本I2C-interrupt - access ready I2caRegs.I2CIER.bit.nack = 1;//启用I2C nack中断:通信错误处理 I2caRegs.I2CIER.bit.SCD = 1; //启用停止条件中断 I2caRegs.I2CFFTX.ALL =0; //I2C传输FIFO寄存器 I2caRegs.I2CFFTX.Bit.TXFFIL =0;//将传输中断级别(位字段TXFFIL)设置为零 I2caRegs.I2CFFTX.Bit.I2CFFEN =1;//启用FIFO I2caRegs.I2CFFTX.Bit.TX.TX/IFRS.IFST = 1;传输所有FIFO //I2C接收FIFO寄存器 I2caRegs.I2CFFRX.bit.RXFFIL =2;//当前的默认值,值将根据请求的内容而变化。 I2caRegs.I2CFFRX.bit.RXFFRST = 1;//启用FIFO接收器支持 I2caRegs.I2CFFRX.bit.RXFFIENA = 0;//禁用FIFO RXI2caRegs.I2CMDR.bit.BC=0 ; // 8位数据 I2caRegs.I2CMDR.bit.rm=0; //非重复模式 I2caRegs.I2CMDR.bit.FDF=0; Dint; EALLOW; PieVectorTable.I2CINT1A =&i2c_basic_ISR;//设置ISR例程 PieCtrlRegs.PIEIER8.bit.INTx1 =1; //启用中断 PieCtrlRegs.PIECTRL.bit.ENPIE =1; //启用PIE PieCtrlRegs.PIEACK/bit.ACK8=1; //清除ACK位 IER |= M_INT8; //启用组8中断 I2caRegs.I2CFFTX.Bit.TXFFINTCLR =1; //清除任何挂起的中断 EDIS; EINT; I2caRegs.I2CMDR.bit.IRS = 1; //从重置 返回中取出I2C; }
问题是我从不进入ISR。 有什么想法?