你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
jjbboox 发表于 2018-3-21 17:36 6 c5 T1 s, r0 M* n: i其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。3 D! r4 x' P5 r$ B; `+ c" c STM32F103C8T6 SPI2 ...
yyq006 发表于 2018-3-22 15:21' M! \3 T3 I" e0 c+ U! o2 s! N 按颜色处理,每种颜色正好3个字节,处理不算复杂。+ m8 u2 o- Z& I 压缩存储位可以节省空间,但数据处理要多花一些时间,使 ...
waiman-156411 发表于 2018-3-22 10:06: p0 h0 S+ F9 O, S q# Y) g4 S; o, f 厉害! # E) g7 S3 b* [8 l但3bit要对齐8bit的变量点难度哦。1 K3 n5 D- A. ~; w: ]' B& R p 请教一下用什么方法对齐变量的? ...
lin-ba-xin 发表于 2018-3-27 22:04 + j/ u1 c3 n+ W+ [請問 我目前只驅動一顆WS2812 & z- @1 g! T% ` 所以我將PIXELS_LEN 改成 1 後 燈就不動作 1 v8 ` ?2 B/ m0 J! P, F能問一下還有什麼地方沒注意到的
jjbboox 发表于 2018-3-21 17:363 J9 {! U: k) I) Z 其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。 , ^% q# F3 T0 l% M+ ^% |STM32F103C8T6 SPI2 ...
翱翔云端的鸟 发表于 2018-4-9 15:02 : r( g; Y. o; F `0 ~2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte ...
jjbboox 发表于 2018-4-10 07:303 A3 ?, b$ e1 r# ~, j: R: Y& ?1 L) _ 是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。0 m3 ^" m4 R% |5 f) T 比如8颗粒的灯条,那么分配的内存就应该是 ...
jjbboox 发表于 2018-4-10 07:30- g7 Z, _% }- @, \2 d/ e 是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。% D+ D4 g) k& }) U& P- q' y6 A% ? I 比如8颗粒的灯条,那么分配的内存就应该是 ...
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
其实把SPI的速度调到2.25Mbps,用3bit代表1位即可。这样24bit只需要用8个字节就OK了。. D' P1 U; C6 Q7 N( V
STM32F103C8T6 SPI2 16分频 2.25Mbps完美实现。
厉害!
但3bit要对齐8bit的变量点难度哦。( @0 I& |6 u; U6 e2 |1 k
请教一下用什么方法对齐变量的?
压缩存储位可以节省空间,但数据处理要多花一些时间,使用中要根据实际情况来选择。
相当于用Flash和运算时间换RAM空间。
110代表1) G1 _- b$ q0 E" T- n
100代表0
# k; Y! j5 Y1 h% J. D
所以我將PIXELS_LEN 改成 1 後 燈就不動作
能問一下還有什麼地方沒注意到的# i; h7 s, e% w
感謝
可能是你的reset信号不正确,或者说低电平的持续时间不够。
2.25Mbps 3bit表示24位中的一个位 那一个完整的颜色需要24*3=72bit 的SPI数据 也就是72/8=9byte
这里24bit应该是9byte的数据吧?
是的,其实两头各还要加一个RESET信号,大概在32个字节左右吧。% T' v- g. @! {# O, i. v
比如8颗粒的灯条,那么分配的内存就应该是8 * 9 + 32 = 104字节。' N, D8 f W4 z
16颗粒的灯条就是 16 * 9 + 32 = 176 字节
我现在遇到一个问题 3bit表示一个code 001 表示0code 110表示1code
当我要发送9byte的一个24bit颜色值的时候 比如是传输红色
按照G R B 传输 为 0x00 0xFF 0x00 3 G& i2 u: W9 F5 G2 Z( h& J
转换为二进制6 E- ^* w. ~( c6 W2 Q
001 001 001 001 001 001 001 001 001 001 001
110 110 110 110 110 110 110 110 110 110 110/ s: ~$ s& L1 U
001 001 001 001 001 001 001 001 001 001 001
SPI数据为:* M Q1 X) y" M; j2 m
0x24 0x92 0x49
0010 0100 1001 0010 0100 1001
0xDB 0x6D 0xB6
1101 1011 0110 1101 1011 0110. U* o& R& m% h c- @0 X
0x24 0x92 0x49
0010 0100 1001 0010 0100 1001 ( J1 x4 a( `- Y8 v6 J2 `
* r( _8 }4 T) v
这里的问题是当我SPI发送完0x24之后 发送0x92的时候 0x24的最后一位是0 0x92最后一位是1 导致0x24的最后一个0码和0x92的1码混合了
另外 楼主这里的4M 是不是改为 3.2M更合适啊