_奶咖君_ 发表于 2024-4-20 15:49:08

【咨询】硬件SPI发送字节与字节之间间隙是多少?

最近在要使用一个类似WS2812通讯方式的数码管驱动芯片,最后选择了DMA+SPI模拟驱动芯片时序的方式与芯片通讯。目前通讯已经通了,芯片可以正常使用。

但是有几个疑问,,对于STC的硬件SPI在发送数据的时候,字节与字节之间有一个间隙使用了DMA之后 处于纳秒级别。且相同配置下,大小固定。

1. 这个间隙与什么有关?
2. 一般是多少?
3. 能否通过SPI的配置缩小,或者去掉(仅配置SPI的情况下)?





看过论坛里几篇关于WS2812的帖子,,里面都说了在字节传送时存在一个间隙,,也给出了各种解决方案。我这里想知道这个间隙大概应该怎么计算。


神农鼎 发表于 2024-4-20 19:49:02


先研究下这个贴,如没讲清楚,跟贴跟梁工讨论


SPI DMA 输出控制WS2812三基色彩灯程序,不加反相器,STC8/STC32 - SPI/I2S/I2C,DMA支持的3组SPI和I2C,一线制温湿度传感器 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

_奶咖君_ 发表于 2024-4-20 20:58:33

神农鼎 发表于 2024-4-20 19:49
先研究下这个贴,如没讲清楚,跟贴跟梁工讨论




帖子看过了,,功能都已经实现了,,现在在想了解一些机制性的东西,
我去问问把,,

梁工 发表于 2024-4-20 23:50:18

WS2812对这个间隙要求不严格,我也没定性测试,后续我会测试一下。

_奶咖君_ 发表于 2024-4-21 15:38:21

梁工 发表于 2024-4-20 23:50
WS2812对这个间隙要求不严格,我也没定性测试,后续我会测试一下。

不是不是 您理解错了 ,,我不是在问WS2812的事情,,我问的是关于单片机SPI的间隙.

我觉得这个东西不应该你们芯片厂家在设计芯片的时候,就应该确定的么,或者说官方应该是要知道这部分参数的啊.
实际的测试参数我都已经测试完了,,就是没有找到对应的文献来验证我的测试,,

梁工 发表于 2024-4-21 16:40:14

本帖最后由 梁工 于 2024-4-21 16:41 编辑

_奶咖君_ 发表于 2024-4-21 15:38
不是不是 您理解错了 ,,我不是在问WS2812的事情,,我问的是关于单片机SPI的间隙.

我觉得这个东西不应该你 ...
我没有理解错,我是说,由于WS2812对于间隔时间没有严格要求,小于RES时间50us都可以,所以没有严格测试DMA发送时字节键间隔,通常都是几十ns级别。
DMA SPI发送间隔是由硬件处理的,不可设置。当SPI发送完成,则下一个时钟就会启动下一个字节传送。但由于内部需要时钟同步,所以有一个或几个时钟的间隔是正常的,但我并未严格测试这个间隔时间,因为对于我的所有应用,都不会造成干扰,并且间隔时间也不可设置。

嵌入式之路 发表于 2024-4-21 19:03:47

你调整一下 SPI的频率看下?

熊仔 发表于 2024-4-21 20:10:56

关于STC的SPI以前测试过。普通模式发送一字节,到下一个字节需要等待很长时间。

SPI DMA模式开启FIFO。CLK间隔时间更短,最短1.5T ,就是1.5个SPI时钟节拍。void DMA_Config(void)
{
        DMA_SPI_STA = 0x00;
        DMA_SPI_CFG = 0xE0;                //bit7 1:Enable Interrupt
        DMA_SPI_AMT = 0xff;                //设置传输总字节数:n+1

        DMA_SPI_TXAH = (u8)((u16)&DmaTxBuffer >> 8);        //SPI发送数据存储地址
        DMA_SPI_TXAL = (u8)((u16)&DmaTxBuffer);
        DMA_SPI_RXAH = (u8)((u16)&DmaRxBuffer >> 8);        //SPI接收数据存储地址
        DMA_SPI_RXAL = (u8)((u16)&DmaRxBuffer);

        DMA_SPI_CFG2 = 0x01;        //01:P2.2
        DMA_SPI_CR = 0x80;                //bit7 1:使能 SPI_DMA, bit6 1:开始 SPI_DMA 主机模式, bit0 1:清除 SPI_DMA FIFO
   
    HSSPI_CFG = 0x00;//高速模式时SS 控制信号的HOLD 和SETUP 时间设置0,CLK最小间隔1.5T
    HSSPI_CFG2 = 0x00; //高速模式时SS 控制信号的DEACTIVE 时间设置0,CLK最小间隔1.5T
    HSSPI_CFG2 |= 1<<5;         //使能SPI高速模式

}

小飞侠 发表于 2024-4-22 07:35:39

字节之间的间隔一般都不影响使用吧

_奶咖君_ 发表于 2024-4-22 08:42:37

小飞侠 发表于 2024-4-22 07:35
字节之间的间隔一般都不影响使用吧

是的一般来说不影响,

但是毕竟是有关时序的东西,了解清楚比一直糊里糊涂的用要好。
页: [1] 2 3
查看完整版本: 【咨询】硬件SPI发送字节与字节之间间隙是多少?