- 打卡等级:以坛为家II
- 打卡总天数:402
- 最近打卡:2025-05-01 11:09:19
已绑定手机
金牌会员
- 积分
- 1494
|
/****************************************************************
本次实验的SPI分组为P14 P15 P16 P17
SS MOSI MISO SCK
请将RGB的DIN引脚接到AI8051U的P15引脚进行实验
重头戏在时钟配置函数(Sys.c中)将SPI转到高速SPI达到了刚好的3.2MHZ,
因为高速SPI(HSPI)通过PLL锁相环时钟,输出96MHZ给高速IO时钟,然后高速
SPI的时钟源是高速IO时钟,然后经过15分频后,在SPI配置中又进行了2分频,
所以最后的SPI工作频率是15分频和2分频叠加成了30MHZ,然后就有了SPI时钟
频率为:96/15/2=3.2MHZ,这个是非常合适的时钟频率,接下来就是考虑RGB的
1个时序该多久了,WS2812的时序是800K码率,也就是1个时序需要1250ns的时
间,那么0码是1/4的高电平和3/4的低电平;1码是3/4高电平和1/4低电平.那么
就是总共是1250ns,1/4时长是312.5ns,3/4时长是937.5ns,那我是不是SPI写
1个位就是(1000000/3.2MHZ)=312.5ns,刚好是1/4的占空比,那么我SPI写3个
位就是937.5ns了,通过这个原理,我们就可以通过SPI写4个位来实现0码/1码,
那么SPI一次性写8个位(1个字节)就是可以写2个0码/1码了
那么我们将G、R、B分别提取出来,8位的数据我们1次SPI的操作就可以判断2
位该写0还是写1,这样子1次SPI操作就可以写掉2位的RGB值了,1个颜色用4次
SPI操作来写,那么SPI的字节数总共就是4*3=12了
至于高速SPI,需要将SPI的输出口(MOSI和SCK)引脚设置为高速模式,在本次实
验中,需要将P14 P15 P17加内部上拉电阻,P16加内部下拉电阻,并且设置P15
和P17为推挽输出,P16为高阻输入+下拉电阻,这样MOSI输出完成后才会是低
电平
至此,龙场悟道!!!!
****************************************************************/
|
|