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.

[参考译文] LAUNCHXL-F28P65X:SPI W5500和16位架构的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1446924/launchxl-f28p65x-problems-questions-with-spi-w5500-and-16-bit-architecture

器件型号:LAUNCHXL-F28P65X

工具与软件:

您好!

我正在尝试通过 SPI 将 TMS320F28P650DK9连接到 W5500 (Wiznet)。 不过、我觉得在这方面有一些问题、所以有一些问题是向社会提出的。

C2000是16位转换器、这意味着无论协议、外设等如何、我总是必须传输至少2个字节(这是真的吗?)。 (这句话正确吗?)

现在、我感觉这会覆盖 SPI 从器件上的数据。

在 w5500数据表的这张图片中、只传输了1字节的数据、但假设我们要传输2字节。

因此、如果我想传输5字节、例如、因为从器件、w5500需要这个、或者说 SPI 帧:2字节 ADR + 1字节控制+ 2字节数据、然后我必须使用 C2000传输6字节、然后我假设这个附加的字节被写入 w5500的错误寄存器中。 在任何情况下、写入的值都与读取的值不匹配。



此外、读取命令也是一个问题、原因是预期为3字节  

但我发送的是4个字节




我曾尝试使用过 Wiznett 中的 c 库: Library_Driver 387/Ethernet at master - Wiznet/387-GitHub Library_Driver

我已经编写了一个额外的 typedef:

Fullscreen
1
2
3
4
5
6
#ifndef int8_t
typedef int16_t int8_t;
#endif
#ifndef uint8_t
typedef uint16_t uint8_t;
#endif
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


我的陈述正确吗? 这两款芯片是否曾有人碰巧一起工作过? 这项任务是因为 TMS320F28P650DK9是唯一一款具有锁步处理器的高性能芯片。 但是、它"仅"具有 EtherCAT、我绝对需要以太网接口。

此致

Hans

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

    尊敬的 Hans:

    正如您已确定的、您在每次传输中必须始终发送16位。 使用 SPI driverlib 文件中的驱动程序可以发送8位甚至24位。 写入8位(小于16位)时、请确保在发送之前相应地左移位。 接收到的数据不需要进行位移、因为它首先接收到 SPIDAT 的 LSB 中。 有关更多详细信息、请参阅 SPI EEPROM 软件示例。

    此致、

    Aishwarya.

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

    嗨、 Aishwarya、

    新年快乐!

    感谢您的答复。  遗憾的是、我忽略了 syscfg 中 SPI 模块的 DataWidth 设置。 这是一个多么愚蠢的错误。 无论如何,在原始 ioLibrary 中有很多事情要做,以使它在16位 arch 上运行。 我现在能够 ping 通我的设备(使用 SPI 传输的 IP)。 当我完成更改时,也许我会分叉 ioLibrary 并推动 GitHub 上的内容。 可能对其他开发有用

    此致

    Hans