打印
[STM32F1]

STM32的AD和CAN调试不通

[复制链接]
1480|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ERE|  楼主 | 2015-8-4 14:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有人做过STM32和CAN,AD以20KHZ的采样率中断一次采样,然后CAN以1M波特率发送采样到的数据,到另一端,另一端CAN中断接收到数据后也以20KHZ的中断输出到DAC,但是实际测试下来,DAC的输出端没有数据,怎么回事?哪里的问题?如何去调试?

我不用CAN传输,直接AD,采样后DA输出,都可以,说明AD,DA都没问题
然后不用AD,DA中断,CAN单独传输数据也可以,说明CAN也没问题
但是3个整合到一起就有问题了
是不是AD采样速率和CAN波特率不匹配之类的原因还是AD中断和CAN接收中断有冲突之类的原因?
沙发
songchenping| | 2015-8-4 15:23 | 只看该作者
估计是有冲突了。你分别看一下CAN和AD所需要的时间,同时也包括DAC。再有就是软件的问题了

使用特权

评论回复
板凳
ERE|  楼主 | 2015-8-4 17:02 | 只看该作者
songchenping 发表于 2015-8-4 15:23
估计是有冲突了。你分别看一下CAN和AD所需要的时间,同时也包括DAC。再有就是软件的问题了 ...

冲突可能也不会吧,因为实际上我的程序里在AD采样后还有个信号处理函数,当我调用这个信号处理函数处理后输出的时候,反而另一端是可以接收到并输出的,但是当我不调用这个信号处理函数,AD采样后直接CAN发送后,反而就不行了,不知道怎么回事?

使用特权

评论回复
地板
songchenping| | 2015-8-4 17:05 | 只看该作者
在代码里面打个断点看看,如果大断点可以,就是需要加一些延时之类的。这些不实际操作,看是看不出来的。

使用特权

评论回复
5
ERE|  楼主 | 2015-8-4 18:22 | 只看该作者
本帖最后由 ERE 于 2015-8-4 21:29 编辑
songchenping 发表于 2015-8-4 17:05
在代码里面打个断点看看,如果大断点可以,就是需要加一些延时之类的。这些不实际操作,看是看不出来的。 ...

我如果对ADC采样里的语句打断点后,中断就一直在里面执行,跳不出来执行CAN发送函数,另外一边也跳不出执行CAN中断接收函数,但是如果断点不给中断内部的语句,只给CAN发送和中断接收函数,又可以看到发送函数和接收函数可以执行到。这个是怎么回事?

使用特权

评论回复
6
amanda_s| | 2015-8-6 15:44 | 只看该作者
ERE 发表于 2015-8-4 17:02
冲突可能也不会吧,因为实际上我的程序里在AD采样后还有个信号处理函数,当我调用这个信号处理函数处理后 ...

看看经过信号处理函数后将数据送给CAN,和你直接从AD采样后送到CAN,这两段将数据发CAN的程序有什么不一样?
直接将AD采样的数据发给CAN,CAN正确的将数据发出了吗?

使用特权

评论回复
7
mumu3013| | 2015-8-7 09:57 | 只看该作者
1:保证ADC采集的数据正确;
2.CAN发送前看看发送的数据是否是AD采集的数据;
3.CAN接收的数据是否是对应的CAN发送的数据;
4,CAN接收的数据是否正确传送给DAC模块;
自己按照这个思路排除下问题

使用特权

评论回复
8
jiaxinhui| | 2015-8-11 16:21 | 只看该作者
楼主可以参考下这个帖子,希望对你有用https://bbs.21ic.com/icview-823024-1-1.html

使用特权

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

本版积分规则

ERE

2

主题

6

帖子

0

粉丝