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.

[参考译文] msp430F5659:在 USB1上配置 I2C 和 SPI 端口、可以吗?

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/610400/msp430f5659-configure-i2c-and-spi-port-on-usb1-can-that-work

器件型号:MSP430F5659

你(们)好  

我有一个项目、要在同一应用中将 UCB1端口配置为 I2C 和 SPI、请在需要时在它们之间切换。  

使用 UCB1CTL0和 USB1CTL1的 I2C 和 SPI 看起来是相同的寄存器。 当 UCSWRST 位同时复位 I2C 和 SPI 时、当使用 UCSWRST 位启用 I2C 或 SPI 时 、它会同时启用 I2C 和 SPI。  这可以正常工作吗?  我不能把它做对、任何工作、请告诉我。

路易

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

    USCIB 模块可在 I2C 或 SPI 模式下使用。 从 MSP430的角度来看、可以在应用中动态更改其使用、但通常情况下、此操作不会完成。 这主要是因为 I2C 线路需要物理线路上的上拉电阻器、而 SPI 不需要。 持续上拉 SPI 数据线路可能会出现一些问题、尤其是连接的器件无法将线路驱动为低电平时。
    通常、如果同一应用中同时需要 SPI 和 I2C、则会使用不同的 USCI。

    我不确定通过 USB 设置 I2C/SPI 意味着什么。 您是否正在讨论发送可更改 MSP430上设置的 USB 命令? 如果是、这是可行的。 您只需在 USB 堆栈上针对特定命令设置 RX 逻辑、然后更改 USCI 设置。 这与 USB 开发套件中的 USB CDC LED 开/关/闪存示例类似。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    类型错误它是 UCB1它不是 USB。 它是 UCB1CTL0和 UCB1CTL1两个寄存器。 以设置端口开/关

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想随附的屏幕截图来解释详细信息、但我找不到如何附加文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、JH

    以下内容说明了详细屏幕截图  

    ramWtSpiData ->使用 SPI 总线在 FRAM 芯片中写入数据。

    u32ToU8 ->设置写入地址的格式。  在观察1中、显示 u8TempB[4]有数据[0]= 0x00、[1]= 0x04、[2]= 0x00、[3]= 0x00

    在断点处、SPI 总线发出0x00 0x04、然后再次发送0x00

    Register1 Shoe USCI_B1_SPI 模式 UCB1TxBUF __SPI = 0xE1 UCB1RXBUF __SPI = 0xFF

    寄存 器2显示 USCI_B1 I2C 模式 UCB1TxBUF= 0xE1 UCB1RXBUF = 0xFF。

    在调用 ramWtSpiData 之前、代码处于 USCI_B1 SPI 模式、代码会将 UCSWRST 从1更改为0; 但代码会保持 UCB1CTRL1 I2C 模式 UCSWRST = 1;但可以看到、它是0。  

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

    要附加屏幕快照、格式化代码或其他高级功能、请使用回复框右下角的"使用丰富格式"按钮。

    我仍不关注您的问题是什么/您想要做什么。 您能否更详细地解释一下您的应用以及您正在尝试做什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问题是在一个应用中使用 USCI_B1进行 I2C 和 SPI 管理、在需要时在 I2C 和 SPI 之间切换、I2C 总线芯片工作正常、可以在这些芯片上查看数据、SPI 总线芯片、它们不工作。 代码无法在 FRAM 中写入数据或从 FRAM 中读回、无法读回所有1s 或0xFF。  需要一种解决方案来使 SPI 总线芯片读取/写入数据。

     

    ramWtSpiData ->使用 SPI 总线在 FRAM 芯片中写入数据。

    u32ToU8 ->设置写入地址的格式。  在观察1中、显示 u8TempB[4]有数据[0]= 0x00、[1]= 0x04、[2]= 0x00、[3]= 0x00

    在断点处、SPI 总线发出0x00 0x04、然后再次发送0x00

    Register1 Shoe USCI_B1_SPI 模式 UCB1TxBUF __SPI = 0xE1 UCB1RXBUF __SPI = 0xFF

    寄存 器2显示 USCI_B1 I2C 模式 UCB1TxBUF= 0xE1 UCB1RXBUF = 0xFF。

    在调用 ramWtSpiData 之前、代码处于 USCI_B1 SPI 模式、代码会将 UCSWRST 从1更改为0; 但代码会保持 UCB1CTRL1 I2C 模式 UCSWRST = 1;但可以看到、它是0。

     

    使用 Microsoft 模式。 它无法附加捕获。  以上问题列表。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从捕获:
    Register1 Shoe USCI_B1_SPI 模式 UCB1TxBUF __SPI = 0xE1 UCB1RXBUF __SPI = 0xFF
    不知道写入0x00 0x04不会显示在这些寄存器上、而是显示写入0x1和读取 oxff

    从捕获:
    寄存器2显示 USCI_B1 I2C 模式 UCB1TxBUF= 0xE1 UCB1RXBUF = 0xFF。
    代码将 I2C 保持在复位状态、但它不是、并且 Tx 0xE1和 Rx 0xff 不知道数据来自何处
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    路易

    如前所述、尽管 MSP 在同一模块(以及引脚)上同时支持 I2C 和 SPI、但两者之间的硬件要求不同。 I2C 需要硬件线路上的上拉电阻器才能工作、而 SPI 不需要。 这就是为什么您在线路被拉至 VCC 时不断读取0xFF。