This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280025C:I2C 引脚配置和简单发送

Guru**** 2445440 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1480393/tms320f280025c-i2c-pin-configuration-and-a-simple-transmit

器件型号:TMS320F280025C

工具与软件:

您好!

我 需要 更改板载 I2C 连接。  

GPIO 27为 SCL 、GPIO26为 SDA。   (我使用此文件进行测试、因为这是项目中的默认 I2C 配置。 电路板默认连接为 GPIO8、GPIO10。 需要稍后将代码更改为此内容)

我 希望每当我写入传输寄存器时 SCL 引脚切换。  未在 SCL 引脚上获取任何时钟。 请仔细检查以下配置并提出错误。

GPIO_setPinConfig (DEVICE_GPIO_CFG_SDAA);
GPIO_setDirectionMode (26、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_SDAA、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_SDAA、GPIO_QUAL_ASYNC);

GPIO_setPinConfig (DEVICE_GPIO_CFG_SCLA);
GPIO_setDirectionMode (27、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_SCLA、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_SCLA、GPIO_QUAL_ASYNC);

void HAL_setupI2CA (HAL_Handle halHandle)

HAL_Obj * obj =(HAL_Obj *) halHandle;

//在配置 I2C 之前必须将其复位
I2C_disableModule (obj->i2cHandle);

// I2C 配置。 使用占空比为50%的400kHz I2CCLK。
I2C_initMaster (obj->i2cHandle、device_SYSCLK_FREQ、400000、I2C_DUTYCYCLE_50);
I2C_setConfig (obj->i2cHandle、I2C_MASTER_SEND_MODE);
I2C_setSlaveAddress (obj->i2cHandle、I2C_slave_address);
I2C_disableLoopback (obj->i2cHandle);
I2C_setBitCount (obj->i2cHandle、I2C_BITCOUNT_8);
// 27FEB I2C_setDataCount (obj->i2cHandle、2);
I2C_setDataCount (obj->i2cHandle、1);
I2C_setAddressMode (obj->i2cHandle、I2C_ADDR_mode_7BITS);

//启用停止条件和寄存器访问就绪中断
I2C_enableInterrupt (obj->i2cHandle、I2C_INT_ADDR_slave | I2C_INT_ARB_LOST | I2C_INT_NO_ACK | I2C_INT_STOP_Condition);

// FIFO 配置
I2C_enableFIFO (obj->i2cHandle);
I2C_setFIFOInterruptLevel (obj->i2cHandle、I2C_FIFO_TXEMPTY、I2C_FIFO_RX2);

// I2C_clearInterruptStatus (obj->i2cHandle、I2C_INT_RXFF | I2C_INT_TXFF);
I2C_clearInterruptStatus (obj->i2cHandle、I2C_INT_ARB_LOST | I2C_INT_NO_ACK);

//配置完成。 启用模块。
I2C_setEmulationMode (obj->i2cHandle、I2C_emulation_free_run);
I2C_enableModule (obj->i2cHandle);

返回;
}//结束 HAL_setupI2CA()函数

 在5毫秒循环中、将0x55写入 TX 寄存器

    HWREGH (I2CA_BASE + I2C_O_DXR)= 0x55;

谢谢!

Anil