前段时间开发ws2812驱动。网上有一些参考,但是全部是在单片机上用pwm实现,估计是考虑实时性和时间高精度要求。
而我的项目的架构中,就只有一个高通的8939,并且只有一路pwm,还被红外ir给霸占了,被逼到墙角了。没办法,活还的干,想到用其他频率高的通讯方式。
最后尝试了几种,选择了spi+bam的方式,这玩意就类似spi+dma,只是bam是高通家定义的。
ws2812们的要求如下:
思路如下:
1、选择合适高的频率,例如4.8MHZ或者9.6MHZ,我选用9.6M,这样spi传1bit花的时间大概是100ns;
2、结合上面的数据传输时间,换算出0码和1