你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
jjbboox 发表于 2018-3-21 17:36 + S( r o4 w7 f, v# W其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。 5 K. F% v- y9 s7 I7 r* T, OSTM32F103C8T6 SPI2 ...
yyq006 发表于 2018-3-22 15:21; B$ i- h: f8 P+ ] 按颜色处理,每种颜色正好3个字节,处理不算复杂。 0 `! Y( S: y1 k8 G压缩存储位可以节省空间,但数据处理要多花一些时间,使 ...
waiman-156411 发表于 2018-3-22 10:06 E% L7 h+ u% Z厉害!0 I. w8 F% @4 P 但3bit要对齐8bit的变量点难度哦。5 Q" C$ ?1 Z0 Z) F+ Z 请教一下用什么方法对齐变量的? ...
lin-ba-xin 发表于 2018-3-27 22:046 |) f. y: _3 }6 V9 p 請問 我目前只驅動一顆WS2812 8 h: a/ E( H; w1 {- r0 R1 O2 B 所以我將PIXELS_LEN 改成 1 後 燈就不動作7 X8 Y: e7 T( J" a0 n 能問一下還有什麼地方沒注意到的
jjbboox 发表于 2018-3-21 17:36 ( p) x; G1 `: [其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。7 W- E6 Q0 `$ U8 n STM32F103C8T6 SPI2 ...
翱翔云端的鸟 发表于 2018-4-9 15:02( y8 ]% S3 v" y1 H" a' ]6 v; A! K 2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte ...
jjbboox 发表于 2018-4-10 07:30 / V/ n/ q0 I5 p( i$ z( o2 w是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。$ {6 g4 Q" y4 v1 J 比如8颗粒的灯条,那么分配的内存就应该是 ...
jjbboox 发表于 2018-4-10 07:30 + s3 D$ m5 y( e1 G$ c! L是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。 2 w/ n& E. h* X5 Z' f# K' a比如8颗粒的灯条,那么分配的内存就应该是 ...
其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。
STM32F103C8T6 SPI2 16分频 2.25Mbps完美实现。5 o1 m I9 z0 l4 ~) h
厉害!* T$ E. X% Z& v$ k& G
但3bit要对齐8bit的变量点难度哦。" T& N; X4 S% j) Q- p. `, y
请教一下用什么方法对齐变量的?
压缩存储位可以节省空间,但数据处理要多花一些时间,使用中要根据实际情况来选择。
相当于用Flash和运算时间换RAM空间。
110代表1
100代表0
所以我將PIXELS_LEN 改成 1 後 燈就不動作
能問一下還有什麼地方沒注意到的
感謝
可能是你的reset信号不正确,或者说低电平的持续时间不够。
2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte 4 ] `5 _+ I I2 M( I) l3 i
这里24bit应该是9byte的数据吧?0 G* T! ^! A: V- k
是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。
比如8颗粒的灯条,那么分配的内存就应该是8 * 9 + 32 = 104字节。
16颗粒的灯条就是 16 * 9 + 32 = 176 字节5 D/ ]6 a) y/ o6 @8 V, F* \
我现在遇到一个问题 3bit表示一个code 001 表示0code 110表示1code
当我要发送9byte的一个24bit颜色值的时候 比如是传输红色( e$ W$ _0 x/ D- H- h/ b, M" v, m
按照G R B 传输 为 0x00 0xFF 0x00
转换为二进制
001 001 001 001 001 001 001 001 001 001 001! a' `' x( [* J8 r9 Y9 o. A
110 110 110 110 110 110 110 110 110 110 1107 m5 k2 ~) m! B5 h* x; C/ D$ K
001 001 001 001 001 001 001 001 001 001 001
O5 j( b+ _. F8 r3 H/ g0 Z3 j
SPI数据为:) D6 q/ y; K' _% m
0x24 0x92 0x49* U" y) m( ]# p6 k0 y: M: K% h
0010 0100 1001 0010 0100 1001 + S2 F# J9 X; N% B* _. n4 G
0xDB 0x6D 0xB6
1101 1011 0110 1101 1011 0110
0x24 0x92 0x499 I( Q; o' r* Y. A4 u' r. X
0010 0100 1001 0010 0100 1001
这里的问题是当我SPI发送完0x24之后 发送0x92的时候 0x24的最后一位是0 0x92最后一位是1 导致0x24的最后一个0码和0x92的1码混合了
另外 楼主这里的4M 是不是改为 3.2M更合适啊