新唐M487SIDAE SPI从机模式接收数据异常

[复制链接]
 楼主| jzywing 发表于 2025-6-10 10:46 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| jzywing 发表于 2025-6-10 10:53 | 显示全部楼层
补充一点,已经关闭了所有其它中断,只开了SPI传输中断
dffzh 发表于 2025-6-10 13:51 | 显示全部楼层
具体是什么异常?是有时候接收到的帧数据(一次9个字节)不对?
WJdemo 发表于 2025-6-10 14:42 | 显示全部楼层
是顺序不对吗?理想值应该是什么?
 楼主| jzywing 发表于 2025-6-10 15:10 | 显示全部楼层
dffzh 发表于 2025-6-10 13:51
具体是什么异常?是有时候接收到的帧数据(一次9个字节)不对?

我主机发送的是固定9字节数据,但从机接收到的红圈内的数据是异常的
 楼主| jzywing 发表于 2025-6-10 15:12 | 显示全部楼层
WJdemo 发表于 2025-6-10 14:42
是顺序不对吗?理想值应该是什么?

我主机发送的是固定9字节数据,0xC1,0x3C,0x4D,0x5E,0x09,0x1A,0x2B,0x18,0x00。红圈处是偶发的异常数据。
dffzh 发表于 2025-6-10 15:19 | 显示全部楼层
jzywing 发表于 2025-6-10 15:10
我主机发送的是固定9字节数据,但从机接收到的红圈内的数据是异常的

是已经确定主机发来的数据(MOSI信号)每次都是对的了?有用逻辑分析仪测试一下MOSI的数据吗?
 楼主| jzywing 发表于 2025-6-10 15:25 | 显示全部楼层
dffzh 发表于 2025-6-10 15:19
是已经确定主机发来的数据(MOSI信号)每次都是对的了?有用逻辑分析仪测试一下MOSI的数据吗? ...

用示波器测试的,波形没问题。实际上是用2路485跑的CLK和DATA,主机那边接收到的数据一直都是对的
dffzh 发表于 2025-6-10 15:32 | 显示全部楼层
jzywing 发表于 2025-6-10 15:25
用示波器测试的,波形没问题。实际上是用2路485跑的CLK和DATA,主机那边接收到的数据一直都是对的 ...

主机给从机发送固定数据的时间间隔呢?延长发送时间间隔或者降低CLK频率呢?
 楼主| jzywing 发表于 2025-6-10 15:49 | 显示全部楼层
dffzh 发表于 2025-6-10 15:32
主机给从机发送固定数据的时间间隔呢?延长发送时间间隔或者降低CLK频率呢? ...

发送频率是200hz,降低也不行。目前用的Clk频率是2.5M,低的没有试过。
dffzh 发表于 2025-6-10 15:52 | 显示全部楼层
本帖最后由 dffzh 于 2025-6-10 16:01 编辑
jzywing 发表于 2025-6-10 15:49
发送频率是200hz,降低也不行。目前用的Clk频率是2.5M,低的没有试过。

1、如果CLK和MOSI的波形没有失真,2.5Mhz应该问题不大,可以降低试一下;
2、从机接收代码和SPI中断处理代码发来看下。
 楼主| jzywing 发表于 2025-6-10 16:10 | 显示全部楼层
本帖最后由 jzywing 于 2025-6-10 17:24 编辑
dffzh 发表于 2025-6-10 15:52
1、如果CLK和MOSI的波形没有失真,2.5Mhz应该问题不大,可以降低试一下;
2、从机接收代码和SPI中断处理代 ...

void SPI0_IRQHandler_BISSCSSI(){
  SPI0->STATUS |=SPI_STATUS_UNITIF_Msk;        
        temp1[tempcnt1][tempcnt] = SPI0->RX;
        tempcnt++;
        if(tempcnt>=9)
        {
                tempcnt1++;
                tempcnt = 0;               
        }        
}
SPI0->SSCTL寄存器没配置,因为没有使用硬件CS脚,不知道这个有没有影响
xch 发表于 2025-6-10 16:26 | 显示全部楼层
是不是忙不过来了? 主机是主控不会忙不过来
xch 发表于 2025-6-10 16:36 | 显示全部楼层
192mhz 的MCU 处理2.5MBPS/8 的中断 大约仅有600周期跑对应接收函数。

我过去用600MHZ ARM9 中断模式接收4Mbps数据都掉渣卡壳。需要改用DMA接收。
dffzh 发表于 2025-6-10 16:42 | 显示全部楼层
我从新唐科技官网找了用户手册,超过10M,无法上传附件,需要的话发我V信,我发你,你看下SPI章节,我没用过这芯片,但看上去应该还是初始化配置代码有点问题,有以下内容:、




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| jzywing 发表于 2025-6-10 17:05 | 显示全部楼层
dffzh 发表于 2025-6-10 16:42
我从新唐科技官网找了用户手册,超过10M,无法上传附件,需要的话发我V信,我发你,你看下SPI章节,我没用 ...

手册我看过了,主要配置我对照看过了。主要是他可以收到数据,只是会出现偶发的错误,这种就很麻烦
dffzh 发表于 2025-6-10 17:09 | 显示全部楼层
本帖最后由 dffzh 于 2025-6-10 17:23 编辑
jzywing 发表于 2025-6-10 17:05
手册我看过了,主要配置我对照看过了。主要是他可以收到数据,只是会出现偶发的错误,这种就很麻烦 ...

降低CLK频率也是一样效果吗?硬件电路在信号线上有木有加RC滤波?截止频率是多少?示波测试出来的CLK波形有吗?发来看下。可能是CLK和MOSI的时序要求处在临界位置导致的。
SPI0->STATUS |=QSPI_STATUS_UNITIF_Msk;  这个掩码值是QSPI_STATUS_UNITIF_Msk?应该是一样的,他们的bit值一样。

 楼主| jzywing 发表于 2025-6-10 17:18 | 显示全部楼层
xch 发表于 2025-6-10 16:36
192mhz 的MCU 处理2.5MBPS/8 的中断 大约仅有600周期跑对应接收函数。

我过去用600MHZ ARM9 中断模式接收4 ...

DMA也用过了,差不多是一样的现象,传几组之后发生错位。之前一直以为是DMA触发的问题。但是现在关闭所有其它中断,只开SPI的接收中断,一个字节一个字节的收,还会发生这个异常,就很疑惑了

评论

xch
还有就是clk 的相位配置错了。得用双踪示波器看 clk 和mosi  发表于 2025-6-10 17:23
 楼主| jzywing 发表于 2025-6-10 17:23 | 显示全部楼层
本帖最后由 jzywing 于 2025-6-10 17:34 编辑
dffzh 发表于 2025-6-10 17:09
降低CLK频率也是一样效果吗?硬件电路在信号线上有木有加RC滤波?截止频率是多少?
SPI0->STATUS |=QSPI_S ...

笔误,实际是SPI_STATUS_UNITIF_Msk。硬件电路上没有滤波,是直连的。
dffzh 发表于 2025-6-10 17:26 | 显示全部楼层
本帖最后由 dffzh 于 2025-6-10 17:28 编辑
jzywing 发表于 2025-6-10 17:23
笔误,实际是SPI_STATUS_UNITIF_Msk

如果软件本身没什么问题,那就看下硬件;
硬件电路在信号线上有木有加RC滤波?截止频率是多少?示波器测试出来的CLK波形有吗?发来看下。可能是CLK和MOSI的时序要求处在临界位置导致的。只要降低CLK频率测试一下就知道是不是这个问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部