首先需要理解网络传输速率的一些基本单位:
1.kbps和kBps的区别
(1)kbps:千比特每秒kilobits per second),表示每秒可以传输1000比特的数据。
(2)kBps:千字节每秒(kilobytes per second),表示每秒可以传输1000字节的数据。
2.比特和字节的关系
(1)1字节(Byte)=8比特(bit)
(2)所以1字节的数据大小是1比特的数据大小的8倍。
3.周期时间计算公式
周期时间=数据单位大小/速率
4.数据单位的大小
(1)对于kbps,数据单位是1比特,大小是1位。
(2)对于kBps,数据单位是1字节,大小是8位。
5.例子
(1)800kbps的周期时间=1比特/800kbps=0.00000125秒=1.25微秒/比特
800kbps的周期时间=1比特/800kbps
=1/800,000比特每秒
=0.00000125秒
=1.25微秒
(2)800kBps的周期时间=1字节/800kBps=0.00125秒=1.25微秒/字节
1.800kBps表示每秒传输800,000字节(800千字节的数据
2.周期时间计算公式周期时间=数据单位大小/速率
3.对于kBps,数据单位是"字节”大小为8位
4.将数据单位大小和速率代入公式河得:
周期时间=1字节/800,000字节每秒
=1/800,000
=0.00000125秒
=1.25微秒
1.800kBps表示每秒传输800,000字节等于6400,000比特
2.周期时间计算公式周期时间=数据单位大小/速率
3.将数据单位大小和速率代入公式河得:
周期时间=1比特/6400,000比特每秒
=1/6400,000
=0.00000015625秒
=0.15625微秒/比特
6.常用速率单位转换:
1kbps 1000 bit/s
1kBps 8000 bit/s (1Byte 8 bit)
1Mbps 1000kbps
1MBps 1000kBps
7.总结
(1)kbps以比特为数据单位,kBps以字节为数据单位。
(2)1字节是1比特的8倍,所以相同数字的kbps和kBps,周期时间相差8倍。
(3)计算周期时间时必须预注意数据单位的区别,才能得到正确的结果。
当数据速率以kbps(千位每秒)为单位增加时,周期时间会减小。这是因为周期时间与速度成反比关系。具体来说,如果kbps的数值增加,表示每秒传输的位数更多,因此一个周期内经历的时间更短。
理解了这些网络传输速率的基本知识我们来看关于SPI控制单线归零码驱动的分析:
最近在一个项目中需要通过STM32控制WS2812 B RGB LED灯带。WS2812B的控制信号1250ns周期的脉冲信号,逻辑1是800ns高电平+450ns低电平,逻辑0是400ns高电平+850ns低电平。为了通过SPI产生这种控制信号我对信号特征进行了分析:
1.SP1一次传输8位数据若将前6位设为1、后2位设为0,即数据0xFC,可以产生一个脉冲信号。
2.该脉冲周期为1250ns,则每个位的时间为1250/8=156.25n5.
3.因此,SPI的时钟频率需设为1/156.25ns=6.4MHz.
4.在6.4MHz时钟下,0xFC产生的信号为(6/8)*1250=937ns高电平和(2/8)*1250=312ns低电平。
5.同理,0xC0可以产生312ns高电平和937ns低电平。
6.这与WS2812B的逻辑电平定义基本匹配.
下面是cubemx spi +DMA的配置
系统时钟配置:
SPI配置:
SPI NVIC配置
SPI DMA配置