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.

急求!!!TMS570LS3137的MibSPI使用方法&例程

Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

你好,

项目使用TMS570LS3137 MCU与协处理器间通信,一次通信数据约几十字节。想避免数据的组包和拆包,所以希望一次SPI传输就搞定一次通信数据。

发现MibSPI1,3,5的通用SPI模式一次传输只能2个字节(16位),考虑MibSPI模式。

看完技术手册上MibSPI模式的描述后,工作过程不清晰:

我简单理解,MibSPI模式是将发送和接收缓存器容量扩大了,允许一次多字节传输。

比如发送/接收40个字节数据,中断发送,查询接收。使用TXRAM/RX RAM的buffer0~20。发送数据写入Multi-buffer RAM Transmit Data Register对应buffer0~20的的TXDATA位,就可以触发发送了?那么传输组(TG)是什么意思?TG和TXRAM buffer0~20如何对应呢?TG的触发源必须设置么?

中断发送:每次“TG完成”中断,向buffer0~20写入新的数据?

查询接收:查询“RXOVRN”标志,置1后从buffer0~20读出数据?

另,有无MibSPI的通信例程可以参考学习。(不使用DMA方式)

多谢!

  • Hi LiangYuan,

    我简单理解,MibSPI模式是将发送和接收缓存器容量扩大了,允许一次多字节传输。

    没错。

    比如发送/接收40个字节数据,中断发送,查询接收。使用TXRAM/RX RAM的buffer0~20。发送数据写入Multi-buffer RAM Transmit Data Register对应buffer0~20的的TXDATA位,就可以触发发送了?那么传输组(TG)是什么意思?TG和TXRAM buffer0~20如何对应呢?TG的触发源必须设置么?

    传输组的意思是当使用MibSPI功能时,可以一次发送多个数据,这些数据的发送格式(波特率、数据长度、片选等)是相同的,那么可以把这些数据打包成一个传输组,一次性触发完成。TG的触发源可以配置,当然也可以配置成disable,那样,在往传输组的RAM里写完发送数据后,需要用软件把TGxCTRL[31]也就是TGENA来触发发送。

    你可以使用Halcogen生成的函数来装载和触发发送。

    装载:void mibspiSetData(mibspiBASE_t *mibspi, uint32 group, uint16 * data)

    触发发送:void mibspiTransfer(mibspiBASE_t *mibspi, uint32 group)

    中断发送:每次“TG完成”中断,向buffer0~20写入新的数据?

    你可以设置在传输组发送完成后触发中断,来装载下一次需要发送的数据,并触发发送。

    也可以通过Halcogen生成的函数来判断:boolean mibspiIsTransferComplete(mibspiBASE_t *mibspi, uint32 group)

    查询接收:查询“RXOVRN”标志,置1后从buffer0~20读出数据?

     你可能过判断传输组的起始地址和结束地址来判断是否有数据。

    也可以通过Halcogen生成的函数来读取数据:uint32 mibspiGetData(mibspiBASE_t *mibspi, uint32 group, uint16 * data)

    另,有无MibSPI的通信例程可以参考学习。(不使用DMA方式)

    目前没有MibSPI的例程,请用Halcogen生成函数。

    Regards,

    Jay

  • 您好!

     我想一次发送的数据很多,大约 2000位左右。。。 速率相同的

    需要怎么设置mibspi  

  • 专家

    你好!

    能给写个简单的例子吗?

    想发送2000多位,大约200个字节,同样的速率,连续发送