搜索
bottom↓
回复: 11

请教 SPI 从机 接收问题

[复制链接]

出0入14汤圆

发表于 2019-12-11 13:18:35 | 显示全部楼层 |阅读模式

用作SPI 从机 只做接收

但是发现 CLK 识别不对

例如


第四根线是 我做的一根测试线,每次中断接收到一个字节就翻转一次

但是为什么总是在字节中间翻转....时钟识别不对?

用的是SPI波特率才50K。。。。每个字节中间间隔也挺长的....没有硬件NSS

以下是初始化
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_RxOnly;                //双线-只接收
        SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;                                //设置为从SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                                //空闲状态时,SCK保持高电平
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                        //数据采样从第二个时钟边沿开始
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                //NSS信号由软件(使用SSI位)管理
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;        //波特率预分频值为16
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                        //数据传输从MSB位开始
        SPI_InitStructure.SPI_CRCPolynomial = 7;                                                //CRC值计算的多项式
        SPI_Init(SPI3, &SPI_InitStructure);


//中断服务程序
void SPI3_IRQHandler(void)
{
        static unsigned char TestFlag = 0;
       
        if(SPI_I2S_GetITStatus(SPI3,SPI_I2S_IT_RXNE) != RESET)        //接收中断
        {
                if(TestFlag==0)
                {
                        TestFlag = 1;
                        Test0_Pin_Ctrl(1);
                }
                else
                {
                        TestFlag = 0;
                        Test0_Pin_Ctrl(0);
                }
               
                //接收数据
                SPI3_RcData[SPI3_FrameIn].Buff[SPI3_Datalent] = SPI_I2S_ReceiveData(SPI3);
                SPI3_Datalent++;
               
                SPI3_RecvTime = SPI123_FRAME_TIME;        //SPI3接收帧间隔时间
               
                SPI_I2S_ClearITPendingBit(SPI3,SPI_I2S_IT_RXNE);
        }
}


本帖子中包含更多资源

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

x

出0入14汤圆

 楼主| 发表于 2019-12-11 13:28:48 | 显示全部楼层
有内部自己超时管理之类的吗?

出0入0汤圆

发表于 2019-12-11 13:37:20 | 显示全部楼层
TX脚是否也配置过了?

出0入0汤圆

发表于 2019-12-11 14:27:00 | 显示全部楼层
从模式NSS用软件控制模式,那么软件要控制CR1的SSI位。
做个可控的主机发送,从数据上判断即可。

出0入14汤圆

 楼主| 发表于 2019-12-11 15:22:52 | 显示全部楼层
xf331785508 发表于 2019-12-11 13:37
TX脚是否也配置过了?

配置过的

出0入14汤圆

 楼主| 发表于 2019-12-11 15:25:34 | 显示全部楼层
styleno1 发表于 2019-12-11 14:27
从模式NSS用软件控制模式,那么软件要控制CR1的SSI位。
做个可控的主机发送,从数据上判断即可。 ...

我尝试过 在每帧数据后面 加上

SPI_NSSInternalSoftwareConfig(SPI3, SPI_NSSInternalSoft_Set);
SPI_Cmd(SPI3, DISABLE);        //使能SPI3
delay_us(10);
SPI_NSSInternalSoftwareConfig(SPI3, SPI_NSSInternalSoft_Reset);
SPI_Cmd(SPI3, ENABLE);        //使能SPI3

还是不行

出0入0汤圆

发表于 2019-12-11 16:45:26 | 显示全部楼层
isakura 发表于 2019-12-11 15:25
我尝试过 在每帧数据后面 加上

SPI_NSSInternalSoftwareConfig(SPI3, SPI_NSSInternalSoft_Set);

这明显是错位了,要么主机已经开始发送你才开启从机接收,要么在从机启动之后主机还没配置好使得CLK上有干扰,建议接个上拉试试。

出0入14汤圆

 楼主| 发表于 2019-12-12 10:54:54 | 显示全部楼层
sme 发表于 2019-12-11 16:45
这明显是错位了,要么主机已经开始发送你才开启从机接收,要么在从机启动之后主机还没配置好使得CLK上有 ...

已经外接了上拉

出0入14汤圆

 楼主| 发表于 2019-12-12 10:57:26 | 显示全部楼层
最新问题。。。很诡异



如图所示,0xFF 数据会接收正常,但是只要收到其他数据,就会出错

感觉 MOSI 接收的 上升沿 影响到了CLK。。。。也作为CLK了

我同时用逻辑分析仪 看了CLK没变化啊

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2019-12-12 11:18:44 | 显示全部楼层
逻辑分析仪采样率低的话看不出来,要用示波器,应该是CLK上有毛刺。
对地接个电容试试

出0入14汤圆

 楼主| 发表于 2019-12-12 11:25:22 | 显示全部楼层
sme 发表于 2019-12-12 11:18
逻辑分析仪采样率低的话看不出来,要用示波器,应该是CLK上有毛刺。
对地接个电容试试 ...

更诡异的是, 我接收SPI主机发出的,MOSI  数据又是正常的....

换到从机发出的就有问题

===

本来是想做个 SPI 工具用来分析数据的....

出0入14汤圆

 楼主| 发表于 2019-12-12 12:24:05 | 显示全部楼层
结贴

谢谢各位帮忙

最后反馈问题原因,是由于 MOSI  MISO 两个脚上的电平不一样.....可能是电压在MOSI上升沿串过去了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 09:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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