打印
[STM32L4]

SPI3的问题

[复制链接]
1949|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llljh|  楼主 | 2020-9-9 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是STM32L432KC,使用STM32CUBEMX生成的代码,想用SPI3,可是用万用表测量,SPI3_SCK的时钟信号幅度才几十毫伏呀,而供电电压是3.3的,怎么回事呀?大家帮帮忙

使用特权

评论回复
沙发
yinxiangh| | 2020-9-9 23:02 | 只看该作者
用示波器看下,除了时钟,还有数据信号线正常吗?

使用特权

评论回复
板凳
ousj| | 2020-9-9 23:09 | 只看该作者
你把SPI配置 CLK空闲时为高电平,看看电压是多少,SPI有4种模式的,默认的可能是SPI模式0,也就是CLK在空闲的时候是低电平

使用特权

评论回复
地板
llljh|  楼主 | 2020-9-9 23:13 | 只看该作者
刚用示波器看了MOSI管脚,程序输出0xAA,示波器上能看出波形来,幅度能达到3.3V

使用特权

评论回复
5
zhuww| | 2020-9-9 23:18 | 只看该作者
万用表是测不出这么高频率的电压的

使用特权

评论回复
6
llljh|  楼主 | 2020-9-9 23:22 | 只看该作者

static void MX_SPI3_Init(void)
{

  hspi3.Instance = SPI3;
  hspi3.Init.Mode = SPI_MODE_MASTER;
  hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi3.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi3.Init.NSS = SPI_NSS_SOFT;
  hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi3.Init.CRCPolynomial = 7;
  hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  if (HAL_SPI_Init(&hspi3) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}
空闲时时钟设置成高了,时钟信号的幅度还是50毫伏左右

使用特权

评论回复
7
bqyj| | 2020-9-9 23:25 | 只看该作者
发送一个字节后,断点打到发送数据的哪一行代码那里的下一条语句,再量一下CLK的电压

使用特权

评论回复
8
llljh|  楼主 | 2020-9-9 23:30 | 只看该作者
低电平

使用特权

评论回复
9
tian111| | 2020-9-9 23:33 | 只看该作者
那就要检查下外围电路了,总结一下你的说法,MOSI能够发送出波形0xAA,说明SPI能够工作,时钟门控,配置什么的都没有什么问题,在SPI发送完一个数据后,SPI的CLK信号在空闲状态下应该是高电平的,你测量到的是低电平。建议断电后,用万用表 量下CLK是否短路了

使用特权

评论回复
10
llljh|  楼主 | 2020-9-9 23:36 | 只看该作者
是否是因为管脚跟jtag功能复用引起的,只是在CUBEMX的Pinout界面的SYS->debug选了Serial Wire,但在程序中没看出差别来,还需要做什么么?

使用特权

评论回复
11
zwll| | 2020-9-9 23:39 | 只看该作者
如果是这样, 那就不连JTAG,把程序烧录到STM3里面,然后断电上电,通过示波器抓一下CLK波形,看看有没有跳动

使用特权

评论回复
12
llljh|  楼主 | 2020-9-9 23:42 | 只看该作者
现在我用的是SWD下载Debug的呀

使用特权

评论回复
13
chuxh| | 2020-9-9 23:47 | 只看该作者
    那你可以不debug吗?

使用特权

评论回复
14
llljh|  楼主 | 2020-9-9 23:51 | 只看该作者
在CUBEMXPinout界面的SYS->debug选了Disable,将程序烧录进去,示波器测量SPI3_CLK还是只有不到50毫伏的幅度,MOSI幅度在3.3V,

使用特权

评论回复
15
llljh|  楼主 | 2020-9-9 23:55 | 只看该作者

另在断电情况下用万用表测了,SPI_CLK管脚跟地没有短路,现在SPI3外面没有接任何外设呢

使用特权

评论回复
16
dingy| | 2020-9-9 23:58 | 只看该作者
MOSI 和CLK信号一起量, 用示波器看看MOSI在发送0xAA波形的时候,CLK始终的变化。 抓瞬时波形。

使用特权

评论回复
17
pengf| | 2020-9-10 18:54 | 只看该作者
你这个示波器是多大频率的?

使用特权

评论回复
18
renyaq| | 2020-9-10 18:57 | 只看该作者
换成SPI2试下,或者用SPI1,有可能是硬件电路的问题。

使用特权

评论回复
19
liuzaiy| | 2020-9-10 19:00 | 只看该作者
看下波形,不要相信万用表

使用特权

评论回复
20
chenjunt| | 2020-9-10 19:04 | 只看该作者
换成SPI1和SPI2试一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

粉丝