你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
jjbboox 发表于 2018-3-21 17:36 + `/ h" n( A9 V" b其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。& M6 o; u1 `; C* O' h STM32F103C8T6 SPI2 ...
yyq006 发表于 2018-3-22 15:211 I/ b# \$ }2 y 按颜色处理,每种颜色正好3个字节,处理不算复杂。6 @1 }0 }) i, l4 h0 T& F 压缩存储位可以节省空间,但数据处理要多花一些时间,使 ...
waiman-156411 发表于 2018-3-22 10:06# K) |0 x+ O# d K& l2 O 厉害! ! ` C, r- R+ G$ ?! O- e但3bit要对齐8bit的变量点难度哦。" ^( O0 A% m4 {+ @) Z/ x/ | 请教一下用什么方法对齐变量的? ...
lin-ba-xin 发表于 2018-3-27 22:04 , c6 x2 m* u8 e b' N+ w請問 我目前只驅動一顆WS2812 0 J8 ~2 v( c( W% X& {所以我將PIXELS_LEN 改成 1 後 燈就不動作 $ y& ^" v2 }$ b" ?. e' I, ]能問一下還有什麼地方沒注意到的
jjbboox 发表于 2018-3-21 17:363 a, [. S! F9 Z3 E$ R& b7 A( f, | 其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。* y5 V6 q' L g( }0 j/ ~0 A k STM32F103C8T6 SPI2 ...
翱翔云端的鸟 发表于 2018-4-9 15:028 b- Z& a# D9 u( K# J+ I' G% C) c 2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte ...
jjbboox 发表于 2018-4-10 07:30 - k' `$ z* q/ W是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。3 O3 ^1 f- M( z, Q' l) i 比如8颗粒的灯条,那么分配的内存就应该是 ...
jjbboox 发表于 2018-4-10 07:30 p, U6 ]& _3 _5 z0 L! I是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。' @9 `8 ^8 }& b# Q4 y! r8 o9 B4 |! q1 p 比如8颗粒的灯条,那么分配的内存就应该是 ...
* t, U, f* J- z$ D. J6 j4 L
其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。
STM32F103C8T6 SPI2 16分频 2.25Mbps完美实现。
厉害!9 k* \8 ^7 y5 e3 ^1 k5 Q
但3bit要对齐8bit的变量点难度哦。
请教一下用什么方法对齐变量的?
压缩存储位可以节省空间,但数据处理要多花一些时间,使用中要根据实际情况来选择。
相当于用Flash和运算时间换RAM空间。
110代表1
100代表01 S. y2 H7 A: v# p
所以我將PIXELS_LEN 改成 1 後 燈就不動作- U& z# d; S6 J6 Y! |
能問一下還有什麼地方沒注意到的
感謝
可能是你的reset信号不正确,或者说低电平的持续时间不够。
2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte
这里24bit应该是9byte的数据吧?
是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。9 H0 O6 j5 a. C
比如8颗粒的灯条,那么分配的内存就应该是8 * 9 + 32 = 104字节。/ g; U! q' L0 y
16颗粒的灯条就是 16 * 9 + 32 = 176 字节
我现在遇到一个问题 3bit表示一个code 001 表示0code 110表示1code
当我要发送9byte的一个24bit颜色值的时候 比如是传输红色2 x _2 H& i: B6 R$ h2 l
按照G R B 传输 为 0x00 0xFF 0x00
转换为二进制 i" G: ~' X: o3 {
001 001 001 001 001 001 001 001 001 001 001" @5 d/ U4 e* d# V, Y5 h
110 110 110 110 110 110 110 110 110 110 1100 G9 o& ]3 Z6 H4 O4 q V
001 001 001 001 001 001 001 001 001 001 001 3 P+ R' J, c- z4 |3 Y- G- M3 o
SPI数据为:+ J a$ U/ \3 P* x F0 z$ G
0x24 0x92 0x49# O Z: w/ y* r) o% X0 z
0010 0100 1001 0010 0100 1001
0xDB 0x6D 0xB6: c1 Q+ o( p) q {) X$ |
1101 1011 0110 1101 1011 0110
0x24 0x92 0x49
0010 0100 1001 0010 0100 1001 0 y3 l# v; p$ |0 p4 d7 \: e
# _ j: D& J! E% k0 B+ b! k
这里的问题是当我SPI发送完0x24之后 发送0x92的时候 0x24的最后一位是0 0x92最后一位是1 导致0x24的最后一个0码和0x92的1码混合了
另外 楼主这里的4M 是不是改为 3.2M更合适啊