Other Parts Discussed in Thread: MSP430FR5994
主题中讨论的其他器件:MSP430WARE、
您好!
我尝试通过 MSP430FR5994与支持 SPI 的外部器件进行通信。 我已经成功测试了 MSP430ware driverlib 函数以传输一个字节、我可以在我的示波器上看到我按照我的预期获得了 cs、数据和时钟。 但是、我尝试与之通信的器件使用三字节协议、第一个字节是寄存器地址、接下来的两个字节是读取或写入数据。 现在我的问题是、我不能在第一个字节后读取任何内容。 基本上、按函数看起来是这样的(尚未实现正确的三字节协议、但是一个测试):
unsigned char res _read (unsigned char * port_ss、unsigned char pin_ss、unsigned char addr){ *端口_ss &&引脚_ss;//将 CS 设置为低电平 EUSCI_B_SPI_transmitData (EUSCI_B1_base、addr); while (!EUSCI_B_SPI_getInterruptStatus (EUSCI_B1_BASE、 EUSCI_B_SPI_Transmit 中断); EUSCI_B_SPI_transmitData (EUSCI_B1_base、addr); uint8_t 字节1 = EUSCI_B_SPI_receiveData (EUSCI_B1_base); *端口_ss |= PIN_ss;//将 CS 设置为高电平 unsigned char res =字节1 返回 res; }
由于我删除了任何杂波和特定于器件的内容、并且可能错过了某些内容、因此上述代码中可能存在一些微不足道的错误、但在我的示波器上、我得到了以下内容:
因此,我有两个问题
两个已发送字节之间的时间间隔较大-这是 由于来自 EUSCI_B_SPI_getInterruptStatus 的中断造成的、但为什么这么长、还有其他方法我应该发送两个连续字节以使它们直接传输?
2. 在 EUSCI_B_SPI_receiveData 期间没有任何结果。 无时钟无。 但有一个延迟、我可以看到我是否查看 ss 并使用 Rx 中断等待。
如果使用 driverlib 对多个字节进行 TX 和 RX 的工作示例非常值得赞赏!
很棒,适合任何人来!
