OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5166|回复: 8

问个SPI的问题(ADS电平)

[复制链接]

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
发表于 2015-2-26 16:05:52 | 显示全部楼层 |阅读模式
5金钱

嗯,这次我不是用stm32,是用一个叫KL25的。不过以后还是用原子的stm32加SIM900A做通信。
这次我是用KL25单片机,读ADS1282。但发现一个问题:连续不断发一个指令,高低电平正常,高2.8,低0波形正常。但是如果每间100多ms发送,那么,问题就来了,高电平3,低电平却是2.7。

比如我主程序测试,连续不断发一个指令,比如0x11指令。波形正常,如下:


但我测试,每间隔100多ms发送一个指令,波形就不对了,高电平3,低电平是2.7,波形如下:请教是怎么回事呢?

最佳答案

查看完整内容[请看2#楼]

分析几种可能: 1、测量问题。两个图的时基不一样,一个是2us,一个是20ms,差万倍。后者可能测不到窄脉冲。 2、端口配置问题,可能设置有错误。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11557
金钱
11557
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-2-26 16:05:53 | 显示全部楼层
分析几种可能:
1、测量问题。两个图的时基不一样,一个是2us,一个是20ms,差万倍。后者可能测不到窄脉冲。
2、端口配置问题,可能设置有错误。
回复

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
 楼主| 发表于 2015-2-26 16:06:48 | 显示全部楼层
//连续不断送0x11指令,波形理想,高电平2.8,低0
    while(1)
    {
        while(!(SPI0_S & SPI_S_SPTEF_MASK))  //等待发送缓冲区空闲
        {
            //以后这里加一个喂看门狗    
            t_i++;
            if(4000<=t_i)
            {
                return; //超时退出           
            }        
        }
        SPI0_D=0x11;   //ADC_SDATAC指令0x11
        spi_nop(ADC_SCLK24);   //ADS1282两个指令之间要间隔至少24个SCLK周期

        if(40000<=t_cnt)  //400步大约1ms,40000步大约几十ms左右
        {
            t_cnt=0;
            GPIOE_PTOR |= (1<<3);//PTE3指示灯翻转    
        }
    }
回复

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
 楼主| 发表于 2015-2-26 16:06:58 | 显示全部楼层
//每隔大约100多ms送0x11指令,波形,高电平3,低2.7
    while(1)
    {
        if(40000<=t_cnt)  //400步大约1ms,40000步大约几十ms左右
        {
            t_cnt=0;
            GPIOE_PTOR |= (1<<3);//PTE3指示灯翻转  

            while(!(SPI0_S & SPI_S_SPTEF_MASK))  //等待发送缓冲区空闲
            {
                //以后这里加一个喂看门狗    
                t_i++;
                if(4000<=t_i)
                {
                    return; //超时退出           
                }        
            }
            SPI0_D=0x11;   //ADC_SDATAC指令0x11
            spi_nop(ADC_SCLK24);   //ADS1282两个指令之间要间隔至少24个SCLK周期  
        }
    }
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-26 17:56:23 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
 楼主| 发表于 2015-2-27 11:09:23 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
谢谢!
回复

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
 楼主| 发表于 2015-2-27 11:14:03 | 显示全部楼层
 回复【5楼】 xuande :
---------------------------------
可能是您说的(1)这个原因。今天我按照主管提示,用下降沿捕捉的方式抓波形。

下图是ms级单位时候





下图是ns级别了,抓下降沿

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11557
金钱
11557
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-2-27 21:04:58 | 显示全部楼层
抓到一个脉冲,还不能确定。

时基小一些,应当能看到连续波形;但如果占空比太小,也可能看不到。

可以考虑软件配合,使波形密集一些。确定没问题,再改回去。
回复

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-11-3
在线时间
12 小时
 楼主| 发表于 2015-3-31 13:08:18 | 显示全部楼层
回复【8楼】xuande:
---------------------------------
嗯,就是按您说的,后来我很多测试,就是主程序什么都不做,只不断的发或收,让波形密集。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 07:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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