| 
				打卡等级:以坛为家II打卡总天数:575最近打卡:2025-10-31 09:27:52  已绑定手机金牌会员 
 
 
	积分1959 
 | 
 
| /**************************************************************** 本次实验的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输出完成后才会是低
 电平
 
 至此,龙场悟道!!!!
 
 ****************************************************************/
 
 | 
 |