OpenEdv-开源电子网

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

SPI问题(MOSI正常,SCLK不正常)

[复制链接]

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
发表于 2015-3-30 22:44:50 | 显示全部楼层 |阅读模式
5金钱

最近用到STM32F103的SPI3(硬件SPI)和外部AD芯片通讯,我在主程序里写了个死循环,让MCU的MOSI不停发送:
  while(1)
 {
  SPI_ADS1247_SendByte(0x77);
  }

然后我用示波器测量MOSI和SCLK的波形,发现MOSI的波形是正常的(不停的输出0x77的波形),而SCLK则一直保持一个2.9V左右的电平(高电平是3.3V)。

下图为MISO:



下图为SCLK:


说明一下:SPI3时钟是36M,256分频是140KHz,而MOSI输出0x77,则MOSI周期应该是140/4=35KHz,和示波器显示差不多。网上有人说可能是被拉高了,但是我看了一下程序和硬件,都没有被拉高,希望大家帮看看。

最佳答案

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

终于解决了,找了一下论坛上关于JTAG帖子,发现应该是要关闭JTAG功能,因为我的PB3(SPI3_CLK)占用了JTAG,加上 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
 楼主| 发表于 2015-3-30 22:44:51 | 显示全部楼层
终于解决了,找了一下论坛上关于JTAG帖子,发现应该是要关闭JTAG功能,因为我的PB3(SPI3_CLK)占用了JTAG,加上
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    就可以了
回复

使用道具 举报

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
 楼主| 发表于 2015-3-30 22:47:37 | 显示全部楼层

图片放倒了,不好意思。上次我是用的SPI2驱动的改AD芯片,是可以的,不知道为什么这次SPI3就出现问题了。
另外我补充一下我的软件配置:
  SPI_InitTypeDef SPI_InitStruct; 
  GPIO_InitTypeDef GPIO_InitStructure;
 

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOG,ENABLE);     
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB,&GPIO_InitStructure);         SPI3(SCK  MISO  MOSI)

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);    //PB6-DRDY

 
   GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8|GPIO_Pin_7;   //PB7-CS     PB8-START     
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin= GPIO_Pin_15;   //PG15-RESET     
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOG, &GPIO_InitStructure);


  SPI_Cmd(SPI3,DISABLE);
  SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;
  SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
  SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;       
  SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStruct.SPI_CRCPolynomial = 7;
  SPI_Init(SPI3, &SPI_InitStruct);
 
  SPI_Cmd(SPI3, ENABLE);

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-30 23:40:14 | 显示全部楼层
帮顶....
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11557
金钱
11557
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-31 08:21:51 | 显示全部楼层
SCK管脚配置有问题,或者硬件电路有问题。
回复

使用道具 举报

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
 楼主| 发表于 2015-3-31 09:19:19 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,网上有人说可能是PB3和PB4为JTAG的管脚的原因,是用的SWD下载,只用了SWDIO和SWCLK(PA13和PA14)两个管脚。
回复

使用道具 举报

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
 楼主| 发表于 2015-3-31 09:24:14 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
管脚配置应该没有问题,我用的是SPI3,PB3(SPI3_SCK)、PB4(SPI3_MISO)、PB5(SPI3_MOSI)三个引脚。
配置如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOG,ENABLE);      
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
   
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
   GPIO_Init(GPIOB,&GPIO_InitStructure);         SPI3(SCK  MISO  MOSI) 
详细配置写在上面了,另外,我以前用过这个AD,当时是用的SPI2,没有问题,这次换成SPI3不知道为什么就不行了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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