找回密码
 立即注册
楼主: 梁工

SPI-DMA输出控制WS2812三基色彩灯程序@8H系列/32G系列,不加反相器, CPU休息

  [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-24 08:04:58 | 显示全部楼层
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 !

AI8051U不支持这个特性吗?怎么SPI输出完成后MOSI持续高电平呢?

点评

AI8051U的SPI空闲时输出高电平,所以需要比较器反相一下输出。  详情 回复 发表于 2024-8-24 11:00
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-24 08:50:02 | 显示全部楼层
21cns*** 发表于 2024-8-24 08:04
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是  ...

void  SPI_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都是高电平。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-8-24 11:00:41 | 显示全部楼层
21cns*** 发表于 2024-8-24 08:04
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是  ...

AI8051U的SPI空闲时输出高电平,所以需要比较器反相一下输出。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-24 16:45:52 | 显示全部楼层
梁*** 发表于 2024-8-24 11:00
AI8051U的SPI空闲时输出高电平,所以需要比较器反相一下输出。

请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?

点评

8H8K64U, 32G12K128, 32G8K64  详情 回复 发表于 2024-9-20 07:56
STC32系列,STC8H系列  详情 回复 发表于 2024-8-24 18:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-8-24 18:07:23 | 显示全部楼层
21cns*** 发表于 2024-8-24 16:45
请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?

STC32系列,STC8H系列
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-24 22:10:22 | 显示全部楼层
梁*** 发表于 2024-8-24 18:07
STC32系列,STC8H系列

收到,多谢梁工
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16651
发表于 2024-9-20 07:56:00 | 显示全部楼层
21cns*** 发表于 2024-8-24 16:45
请问,哪些型号的单片机SPI是优化过、支持SPI空闲是输出低电平的?

8H8K64U, 32G12K128, 32G8K64

点评

多谢姚总  发表于 2024-9-20 09:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-01-11 22:06:31

0

主题

12

回帖

92

积分

注册会员

积分
92
发表于 2024-10-22 17:12:16 | 显示全部楼层
本帖最后由 夜幕_x 于 2024-10-22 17:17 编辑

您好,想问下SPI加DMA驱动WS2812灯带的方法,我看您设置灯的数量是60,我加到60以上,他还是只亮60个灯,想问下是怎么回事?刚上手?还有点懵

点评

因为我只发送60个灯的数据,所以只亮60个灯,超过60的灯不管有多少都不亮,你要更多的灯,则定义灯数即可,比如由60改为144,则可以驱动144个灯。  详情 回复 发表于 2024-10-22 18:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-10-22 18:06:00 | 显示全部楼层
夜*** 发表于 2024-10-22 17:12
您好,想问下SPI加DMA驱动WS2812灯带的方法,我看您设置灯的数量是60,我加到60以上,他还是只亮60个灯,想 ...

因为我只发送60个灯的数据,所以只亮60个灯,超过60的灯不管有多少都不亮,你要更多的灯,则定义灯数即可,比如由60改为144,则可以驱动144个灯。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-01-11 22:06:31

0

主题

12

回帖

92

积分

注册会员

积分
92
发表于 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个灯亮,就是一直纠结在这,换了条灯带也已是一样的

截图202410221821009926.jpg

点评

怎么会有问题?请看我测试256灯(16x16个灯)的定义: [attachimg]60813[/attachimg]  详情 回复 发表于 2024-10-22 21:14
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 03:01 , Processed in 0.708169 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表