21cnsound
发表于 2024-8-24 08:04:58
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 !
AI8051U不支持这个特性吗?怎么SPI输出完成后MOSI持续高电平呢?
21cnsound
发表于 2024-8-24 08:50:02
21cnsound 发表于 2024-8-24 08:04
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是...
voidSPI_Config(u8 SPI_speed)
{
P_SW2 |= 0x80; //SFR enable
SPCTL = (SSIG_flag << 7) + (SPEN_flag << 6) + (DORD_flag << 5) + (MSTR_flag << 4) + (CPOL_flag << 3) + (CPHA_flag << 2) + (SPI_speed & 3); //配置SPI
// P_SW1 &= ~(3<<2); //切换到P1.4(SS) P1.5(MOSI) P1.6(MISO) P1.7(SCLK)
P1n_standard(0xF0); //设置为准双向口
// P5n_standard(0x10); //设置为准双向口
P16 = 0; //MISO = 0, MOSI输出完毕保持低电平
P1n_push_pull(Pin5); //驱动WS2812将MOSI设置为推挽输出
}
实际测量,SPI发送间隔中,P1.5和P1.6都是高电平。
梁工
发表于 2024-8-24 11:00:41
21cnsound 发表于 2024-8-24 08:04
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是...
AI8051U的SPI空闲时输出高电平,所以需要比较器反相一下输出。
21cnsound
发表于 2024-8-24 16:45:52
梁工 发表于 2024-8-24 11:00
AI8051U的SPI空闲时输出高电平,所以需要比较器反相一下输出。
请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?
梁工
发表于 2024-8-24 18:07:23
21cnsound 发表于 2024-8-24 16:45
请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?
STC32系列,STC8H系列
21cnsound
发表于 2024-8-24 22:10:22
梁工 发表于 2024-8-24 18:07
STC32系列,STC8H系列
收到,多谢梁工
神农鼎
发表于 2024-9-20 07:56:00
21cnsound 发表于 2024-8-24 16:45
请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?
8H8K64U, 32G12K128, 32G8K64
夜幕_x
发表于 2024-10-22 17:12:16
本帖最后由 夜幕_x 于 2024-10-22 17:17 编辑
您好,想问下SPI加DMA驱动WS2812灯带的方法,我看您设置灯的数量是60,我加到60以上,他还是只亮60个灯,想问下是怎么回事?刚上手?还有点懵{:dizzy:}
梁工
发表于 2024-10-22 18:06:00
夜幕_x 发表于 2024-10-22 17:12
您好,想问下SPI加DMA驱动WS2812灯带的方法,我看您设置灯的数量是60,我加到60以上,他还是只亮60个灯,想 ...
因为我只发送60个灯的数据,所以只亮60个灯,超过60的灯不管有多少都不亮,你要更多的灯,则定义灯数即可,比如由60改为144,则可以驱动144个灯。
夜幕_x
发表于 2024-10-22 18:20:08
本帖最后由 夜幕_x 于 2024-10-22 18:21 编辑
梁工 发表于 2024-10-22 18:06
因为我只发送60个灯的数据,所以只亮60个灯,超过60的灯不管有多少都不亮,你要更多的灯,则定义灯数即可 ...
梁工,我把那个60改成40就是40个灯亮,一旦改超过60,就是一直只有60个灯亮,就是一直纠结在这,换了条灯带也已是一样的