新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2013-3-27
- 在线时间
- 1 小时
|
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库)
|
|