OpenEdv-开源电子网

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

分享STM32F407数据采集板卡开发踩的坑

[复制链接]

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
发表于 2017-5-6 08:56:47 | 显示全部楼层 |阅读模式
本帖最后由 TsingJyujing 于 2017-5-6 08:57 编辑

需求
需要采集车辆的加速度信号,转速、扭矩、车速信号(CAN)以及GPS信号(主要是GPS时间和定位信息)

方案初定
STM32F407最小板+MPU6050+探索者GPS+TJA1050CAN收发器+可调稳压器(24V~28V车电->5V供电转换) 调试使用一个转串口和ST-LINK(SWD接法)。 软件上,准备使用定时器定时查询MPU-6050的数据,串口接收GPS的GPGGA报文,CAN收发器+CAN控制器+CAN中断接受其它数据。

遇到的所有的坑
坑1:便宜的ST-LINK靠不住
ST-LINK买的是最便宜的15元的版本(USB-STLINK),经常断,而且极其不稳定,烧着就断了是家常便饭。
解决方法: 用了自己的F4-Discovery上的ST-LINK,瞬间稳定了。

坑2:坑爹的STM32的IIC
STM32的硬件实现和软件实现差不多,我曾经想过用IIC接收中断,真是Too Naive,光在发送(其实不论收发)的时候,只要IIC的中断稍微被打断一下,整个通信立刻崩溃掉了,经常需要关闭USART的中断才能正确收发信息,将信息放在TIM4中定期取数据,就要保证TIM4中断不能被嵌套。还不如使用软件中断。
解决方法: 使用软件IIC收发,如果收发失败连续k次则休息p秒再重新初始化设备。

坑3:FATFS的移植
FATFS最新版好像是0.12b,但是因为更新幅度比较大,所以直接替换文件移植的方法肯定是不行的~ 之所以要移植因为要使用Append模式写入文件。
解决方法:不移植了,直接使用旧版FATFS,需要以Append方式写入的文件在Open以后直接使用f_lseek(fp, f_size(fp));跳转到文件末尾,然后再Write就OK。

坑4:Optimize造成的程序错误
FATFS不能开Optimize,也就是只能是-O0优化,如果开了-O2优化,就会造成各种奇怪的错误。
解决方法: 将FATFS的东西单独放到一个Group里面去,然后设置优化等级为-o0

坑5:使用C++造成的函数冲突:
使用C++编程的时候特别容易造成函数冲突。
解决方法:Project-->Options-->Target选择Use MicroLIB选项。

坑6:IIC总线上拉无驮
虽然有一句GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉但是依旧不能正确使用IIC,但是接上示波器以后又欢快的跑起来了,我猜想是否因为IO口上拉能力不够造成的?
解决方法: SCL线接2个IO口,控制其中一个即可,为什么会这样暂时不知道。


为往圣继绝学,为知难经过事。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
 楼主| 发表于 2017-5-8 17:33:22 | 显示全部楼层
这里字字血泪啊,自己顶一下,供坛友借鉴
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 01:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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