找回密码
 立即注册
楼主: marshallemon

发现一个SPI接口有趣的问题

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-3-31 16:30:17 | 显示全部楼层
erci*** 发表于 2026-3-13 14:22
你的io看着没开快速翻转,别的差异和上面程序对比下,里面也有dma调用切换注释就行。
从机程序参考,从机大 ...

我尝试使用你发我的主机和从机的程序,分别写道两块核心板中,将两块板子的SS MISO MOSI SCK一一对应接在一起,现在遇到的问题是从机接收到的内容不是主机发送的内容,数据会一直变化,主从机都设置成48M晶振频率
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-3-31 17:02:03 | 显示全部楼层
erci*** 发表于 2026-3-13 14:22
你的io看着没开快速翻转,别的差异和上面程序对比下,里面也有dma调用切换注释就行。
从机程序参考,从机大 ...

我把从机中断中回数据注释掉后,从机收到的数据才是正常的,这样成了主机发,从机收。但我需要的是全双工的,有没有DMA全双工,主从机通讯的例程?

点评

上面回复过了,程序内切换注释使用DMA  发表于 2026-3-31 17:15
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-4-1 13:51:29 | 显示全部楼层
erci*** 发表于 2026-3-13 14:22
你的io看着没开快速翻转,别的差异和上面程序对比下,里面也有dma调用切换注释就行。
从机程序参考,从机大 ...

我测试了,DMA方式下,只要使用你给出的从机程序,从机接收到的数据就是错误的,将从机代码的SPI修改为如下,SPI接口的数据才是正确的,但这样SPI就成了半双工////////////////////////////////////////
// SPI1中断服务程序
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void SPI1_ISR(void) interrupt SPI1_VECTOR
{
    //<<AICUBE_USER_SPI1_ISR_CODE1_BEGIN>>
    // 在此添加中断函数用户代码  

                u8 temp;
    if (SPI1_CheckFlag())                //判断SPI中断
    {
        SPI1_ClearFlag();                //清除SPI中断标志
                                temp = SPDAT;
//                                SPDAT = temp ;
                                rx_buffer[rx_index++] = temp;
        fSPI1TransBusy = 0;              //清除SPI忙标志位
                                //printf("%02X\n",temp );
    }
    //<<AICUBE_USER_SPI1_ISR_CODE1_END>>
}
麻烦给出一个完整的DMA SPI 全双工的例程,谢谢

点评

我是测试pass的,降低主频试下  详情 回复 发表于 2026-4-1 14:05
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:529
  • 最近打卡:2026-05-08 08:55:53
已绑定手机

108

主题

4363

回帖

9773

积分

荣誉版主

无情的代码机器

积分
9773
发表于 2026-4-1 14:05:19 | 显示全部楼层
marsha*** 发表于 2026-4-1 13:51
我测试了,DMA方式下,只要使用你给出的从机程序,从机接收到的数据就是错误的,将从机代码的SPI修改为如 ...

我是测试pass的,降低主频试下
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-4-1 14:14:17 | 显示全部楼层
erci*** 发表于 2026-4-1 14:05
我是测试pass的,降低主频试下

只降低主机主频就可以了吧?

点评

降低spi master 的时钟频率 [attachimg]134994[/attachimg]  详情 回复 发表于 2026-4-1 14:15
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:529
  • 最近打卡:2026-05-08 08:55:53
已绑定手机

108

主题

4363

回帖

9773

积分

荣誉版主

无情的代码机器

积分
9773
发表于 2026-4-1 14:15:26 | 显示全部楼层
marsha*** 发表于 2026-4-1 14:14
只降低主机主频就可以了吧?

降低spi master 的时钟频率


截图202604011415211985.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-4-1 14:26:29 | 显示全部楼层
erci*** 发表于 2026-4-1 14:15
降低spi master 的时钟频率

我就是直接使用的你发的例程,SPI的时钟频率应该是20M
我尝试将主机SPI的分频数设置到16分频,从机收到的数据还是错误的

点评

这个附件不要修改直接测,48M下载。 还不行的话上传逻辑分析仪数据看看 [attachimg]134995[/attachimg]  详情 回复 发表于 2026-4-1 15:00
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:529
  • 最近打卡:2026-05-08 08:55:53
已绑定手机

108

主题

4363

回帖

9773

积分

荣誉版主

无情的代码机器

积分
9773
发表于 2026-4-1 15:00:49 | 显示全部楼层
marsha*** 发表于 2026-4-1 14:26
我就是直接使用的你发的例程,SPI的时钟频率应该是20M
我尝试将主机SPI的分频数设置到16分频,从机收到的 ...

这个附件不要修改直接测,48M下载。先上电从机,再上电主机。两个板子就近接地,不要通过串口工具绕一大圈共地。
还不行的话上传逻辑分析仪数据看看
截图202604011459516888.jpg

spi.zip (2.31 MB, 下载次数: 4)
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2026-05-06 09:39:14

5

主题

42

回帖

186

积分

注册会员

积分
186
发表于 2026-4-1 15:19:06 | 显示全部楼层
erci*** 发表于 2026-4-1 15:00
这个附件不要修改直接测,48M下载。
还不行的话上传逻辑分析仪数据看看

你测试用的MCU是3.3V供电还是5V供电,经测试发现MCU在3.3V供电下你给的程序才可以正常运行。另外问下,LINK1D的设置输出电压是每次都需要设置下吗?设置完不会保存吗?

点评

1.5V 也能正常工作,而且比3.3V可以工作频率更高一些。 2.每次上电都要设置下  详情 回复 发表于 2026-4-1 15:23
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:529
  • 最近打卡:2026-05-08 08:55:53
已绑定手机

108

主题

4363

回帖

9773

积分

荣誉版主

无情的代码机器

积分
9773
发表于 2026-4-1 15:23:24 | 显示全部楼层
marsha*** 发表于 2026-4-1 15:19
你测试用的MCU是3.3V供电还是5V供电,经测试发现MCU在3.3V供电下你给的程序才可以正常运行。另外问下,LI ...

1.5V 也能正常工作,而且比3.3V可以工作频率更高一些。

2.每次上电都要设置下
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-9 00:34 , Processed in 0.137261 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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