OpenEdv-开源电子网

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

STM32F103 SPI data电压不够

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2013-3-27
在线时间
1 小时
发表于 2021-3-10 06:19:46 | 显示全部楼层 |阅读模式
10金钱
最近我调试遇到了一个问题,我的SPI 数据一直为0, 看了一下波形后发现:CLK波形正常,Data的波形很奇怪,有数据,但是高电平只有1.4V。
1. 我采用的芯片是SMT32F103C8T6,使用了16个PWM,也就是TIM1,2,3,4全部用掉了。以systick作为系统调度时钟。然后我采用了PB15作为SPI的data, PB13作为SPI的CLK,SPI为软件模拟,硬件SPI不行,因为采用的芯片是MAX31855,数据位是32位的,硬件SPI不是8位就是16位。另外就是使用了I2C2.整个芯片的资源基本已经被我全用掉了。软件使用的是STM32CubeMX自动生成的HAL库。
整体调试的时候发现刚初始化完之后第一个SPI的波形是正常的,第二个开始data波形高电平部分瞬间从3.3下拉到了1.4V。
2. 1中提到的这种状态,我在IO 初始化的时候将SPI的DATA从输入改为推挽输出,当前SPI只有主机读取功能,没有写入功能。理论上讲不应该配置成输出,然后我debug发现有数据过来了,但是不稳定,偶尔会出现数据为0的状态。观察了波形,将SPI的data改为输出之后整体波形抬升,所以STM芯片奇迹般的能识别SPI数据了。
3. 我将PWM全部关掉,输出控制不采用PWM了,直接IO方式控制。除了这点变化以外,其余的SPI还是软件模拟,另外I2C也没有变化。这一次我SPI有数据了,并且是稳定的,但是我量了一下,SPI 的data电压高电平只有2.0V左右。索性数据还是有的,还能使用。
4. 我直接采用网上下载的MAX31855的例程,标准库(非HAL库),SPI data,clk波形正常(高电平3.3V)。
以上是我整个调试过程中发现的问题,感觉上像是芯片输出上不够了,带不动了。但又有点怀疑是不是cubemx生产的HAL库存在缺陷呢?(这里我谈谈我为啥不用标准库,我的I2C 作为从机要能被读写,HAL库新版本有对I2C的读写方向进行识别,这样不会出错I2C卡死的问题。这块也是调通的,标准库这块没跳过带读写的I2C,因此使用了HAL库)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

314

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1039
金钱
1039
注册时间
2020-7-21
在线时间
258 小时
发表于 2021-3-10 10:25:47 | 显示全部楼层
帮顶               
回复

使用道具 举报

1

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2017-11-14
在线时间
34 小时
发表于 2021-3-10 10:35:03 | 显示全部楼层
本帖最后由 cjsyrzy 于 2021-3-10 13:09 编辑

可以用硬件SPI,32位拆成4个8位或2个16位。
电平不稳怀疑TIM1的 CHxN通道可能打开了,试一下只关闭TIM1 PWM。

刚看了一下MAX31855芯片,单片机读取SPI数据,一般是连PB14吧。


HAL配置完所有项目后面,再配置一遍PB15,PB15设置成 上拉输IPU 试一下 。



关于第二问题,stm32在配置成输出时是可以读到输入值的,输入输出分别对应 IDR ODR寄存器。stm32的输出和MAX31855的输出连接到一起,这时线上的电平 谁的驱动能力更强听谁的



回复

使用道具 举报

1

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
1023
注册时间
2019-9-21
在线时间
269 小时
发表于 2021-3-10 12:00:59 | 显示全部楼层
帮顶!
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-3-10 19:41:05 | 显示全部楼层
1、电平不够,可以将spi总线加上拉电阻
2、看时序图,不用看寄存器位数,一般都支持硬件spi,如上楼说的,32位即是4个8位。
参考标准spi访问非标spi例子:https://acuity.blog.csdn.net/article/details/86619218
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2019-10-4
在线时间
7 小时
发表于 2021-3-10 20:40:14 | 显示全部楼层
1、电平不够,可以将spi总线加上拉电阻
2、看时序图,不用看寄存器位数,一般都支持硬件spi,如上楼说的,32位即是4个8位。
参考标准spi访问非标spi例子:https://acuity.blog.csdn.net/article/details/86619218
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2013-3-27
在线时间
1 小时
 楼主| 发表于 2021-3-10 21:08:10 | 显示全部楼层
之前我可能是硬件连错了,应该连PB14的,连成了PB15了,我这块只能用模拟SPI了。关于上拉电阻问题,我加过,没有效果。我换成了其他引脚data高电平能达到2.1V,数据采集没问题。关闭TIM1的反向通道关闭我要看一下,还没操作过。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 22:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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