你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
jjbboox 发表于 2018-3-21 17:36 ) F/ n- @9 V! f7 k; q其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。1 j9 w8 N" r* r- M- [0 `1 x STM32F103C8T6 SPI2 ...
yyq006 发表于 2018-3-22 15:216 b0 T7 ]) H( N7 k7 r 按颜色处理,每种颜色正好3个字节,处理不算复杂。 ) y' _7 u: r9 W1 O压缩存储位可以节省空间,但数据处理要多花一些时间,使 ...
waiman-156411 发表于 2018-3-22 10:06 / S8 J0 j5 Z& ~' @: V- B厉害! ; H5 ^7 D2 @/ q3 d% V- b4 S但3bit要对齐8bit的变量点难度哦。! v$ m! ^6 R/ c$ m3 X 请教一下用什么方法对齐变量的? ...
lin-ba-xin 发表于 2018-3-27 22:04 $ R3 O6 d% o9 W% F4 `6 X& F請問 我目前只驅動一顆WS2812 $ ^7 E6 C U( R2 n, X# k; g6 c# T 所以我將PIXELS_LEN 改成 1 後 燈就不動作2 D% d+ G1 f, I8 c, R, n7 T& i$ t 能問一下還有什麼地方沒注意到的
jjbboox 发表于 2018-3-21 17:367 g- u+ A: G6 t$ O7 ?" e, [1 `% h4 J6 K 其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。 1 R8 e, _, U; W: gSTM32F103C8T6 SPI2 ...
翱翔云端的鸟 发表于 2018-4-9 15:02 * L4 I% Y+ m) w/ Z5 U2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte ...
jjbboox 发表于 2018-4-10 07:30 # f4 r1 L6 `( J7 v- _( Y是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。5 C' {# M; O. @ 比如8颗粒的灯条,那么分配的内存就应该是 ...
jjbboox 发表于 2018-4-10 07:30 ; G2 x% s9 K' B9 Y0 y, t是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。. |% c4 r$ W& C$ }( ? 比如8颗粒的灯条,那么分配的内存就应该是 ...
: v! l6 k: N1 |1 j0 a9 Q# C0 l' ?
其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。% [+ a! h) k, \! u8 N
STM32F103C8T6 SPI2 16分频 2.25Mbps完美实现。4 @1 `* Y1 k; M7 U/ b( ^
厉害!9 C+ C6 g) E ]6 ]1 x& X h8 J+ }
但3bit要对齐8bit的变量点难度哦。
请教一下用什么方法对齐变量的?
压缩存储位可以节省空间,但数据处理要多花一些时间,使用中要根据实际情况来选择。
相当于用Flash和运算时间换RAM空间。
110代表1
100代表0
5 ^ s& q' E$ |7 _
所以我將PIXELS_LEN 改成 1 後 燈就不動作
能問一下還有什麼地方沒注意到的4 W/ p4 j9 G; s! v D
感謝
可能是你的reset信号不正确,或者说低电平的持续时间不够。
2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte 1 ?# A4 H* P9 t% D# j4 i8 r+ O: `
这里24bit应该是9byte的数据吧?$ ^) H& Q* I4 c1 D
是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。
比如8颗粒的灯条,那么分配的内存就应该是8 * 9 + 32 = 104字节。: r( A/ [* s0 C+ t5 G. Z& s+ h
16颗粒的灯条就是 16 * 9 + 32 = 176 字节
我现在遇到一个问题 3bit表示一个code 001 表示0code 110表示1code
当我要发送9byte的一个24bit颜色值的时候 比如是传输红色
按照G R B 传输 为 0x00 0xFF 0x00
3 u) |0 W" X/ K+ \
转换为二进制/ L0 E8 h6 N5 c: j8 n
001 001 001 001 001 001 001 001 001 001 0019 @" g: v; |% k( I! w' D
110 110 110 110 110 110 110 110 110 110 110
001 001 001 001 001 001 001 001 001 001 001
SPI数据为:: X$ B3 _; H2 {
0x24 0x92 0x491 Q ]* h8 l6 s1 p( [+ C
0010 0100 1001 0010 0100 1001
0xDB 0x6D 0xB6
1101 1011 0110 1101 1011 0110
0x24 0x92 0x49
0010 0100 1001 0010 0100 1001
这里的问题是当我SPI发送完0x24之后 发送0x92的时候 0x24的最后一位是0 0x92最后一位是1 导致0x24的最后一个0码和0x92的1码混合了
另外 楼主这里的4M 是不是改为 3.2M更合适啊