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.

[参考译文] MSP432P401R:I2C 发送默认缓冲器值为0xff

Guru**** 2558250 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/599271/msp432p401r-i2c-sending-default-buffer-value-as-0xff

器件型号:MSP432P401R

您好!

我使用嵌入式 c 语言和 CCS IDE 使用 cap1188编写了 msp432的代码。

首先、我尝试读取一个寄存器值。 从器件地址的写入模式开始通信、同时接收到 ACK。 但寄存器的值是直接发送0xFF (255)值。 当我更改 寄存器值 时、默认值仅发送0xFF。 使用0xff 寄存器地址值时、读取操作正常。  

//将 USCI_B0配置为 I2C 模式
EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_SWRST;//启用软件复位
EUSCI_B0->CTLW0 = EUSCI_B_CTLW0_SWRST |//在复位模式下保持 eUSCI
EUSCI_B_CTLW0_MODE_3 |// I2C 模式
EUSCI_B_CTLW0_MST |//主控模式
EUSCI_B_CTLW0_SYNC |//同步模式
EUSCI_B_CTLW1_SWACK |//发送模式
EUSCI_B_CTLW0_ssel_SMCLK;// SMCLK

EUSCI_B0->BRW = 30;//波特率= SMCLK / 30 = 100kHz
EUSCI_B0->I2CSA = 0x0028;//从地址
EUSCI_B0->CTLW0 &=~EUSCI_B_CTLW0_SWRST;//从复位中释放 eUSCI

EUSCI_B0->IE |= EUSCI_B_IE_RXIE |//启用接收中断
EUSCI_B_IE_TXIE;//|//启用 Tx 模式中断

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

    Rajineekar、  

     您是否尝试运行过使用 Driverlib API 的 I2C 示例? 它们更独立于器件。 代码的其余部分可以保持不变。  请查看 Resource Explorer 中的 i2c_master_w_multibyte-master_code 项目,网址为 dev.ti.com/tirex/# 。  driverlib 示例位于:

    软件-> SimpleLInk MSP432 SDK ->示例->开发工具-> MSP-EXP432P401R -> DriverLib

    如果您希望在寄存器级别编写代码、则可以在上面所示的同一路径中引用 msp432p401x_euscib0_i2c_10.c 示例(将上面路径中的"Register Level"替换为"DriverLib"。  

    此致、

     Bob

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

    主席先生,

      我仅使用纯 c 进行尝试。 尚未通过 API 调用测试。  

    此致、

    Rajineekar。