基于STM32F103C8t的CAN通讯实例(带程序注释)

2019-12-09 20:00发布

这个实例的板子和程序均为个人兴趣所做,测试已经通过,但是难免有所问题,如有错误和能够完善的地方,希望和大家相互学习。
整体构思:这套小板是为了通过I/O口低电压系统(3.3V)隔离驱动高电压系统(24V),实现MCU对24V电压输出的有无控制,低电压系统对高电压系统的隔离驱动控制是通过光耦来实现的,MCU的I/O输出0V时,光耦导通,对应接口输出24V。
(实际测试时已经通过硬件结构使每个I/O口对应一个小灯,MCU的I/O输出0V时,对应接口输出24V,小灯点亮;MCU的I/O输出3.3V时,对应接口输出0V,小灯熄灭)。
2.PNG (6.31 KB, 下载次数: 17) 下载附件 2013-11-27 13:57 上传
3. 关于接收数据的处理。因为在can中断中收到的数据是存在8个数组中的RxMessage.Data所以如何把他们提取出来,我采用的方法是定义了一个int aa[8],然后依次用移位与1与的方法,把数组中的数据1位位提取出来。如a[0]= RxMessage.Data[0]&1;a[1]= (RxMessage.Data[0]>>1)&1;依次类推,即可把一个字节中的数据内容都提取出来,依此方法循环,再把其余7个字节中的数据进行提取,进行下一步的处理。
4.在发送小板发送数据时,把CAN的数据进行传递进去的时候定义了一个指针,把数组的首地址传入进去,这样觉得比较方便。
附件中带了主板的原理图和发送小板的程序以及接收小板的程序,加带了注释,可供新手进行学习参考(—_-||)接收小板的程序上传不了了,说我今日无法上传那么大的附件,以后传上来吧
stm32气缸板.pdf (273.92 KB, 下载次数: 470) 2013-11-27 14:18 上传 点击文件名下载附件




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
47条回答
昨夜清风
1楼-- · 2019-12-12 03:35
刚好要用到CAN,学习学习
kuwu007
2楼-- · 2019-12-12 05:27
如果can发送正常的话,示波器在其引脚测量,应该能查看的波形,但现在只是高电平,而且在执行但不运行时,也一点反映的都没有!试问,楼主有没有遇到这样的情况!

如果将芯片改成STM32F103VET,其就可以正常发送!已经三番检查,就是没查出原因!
fly_yun
3楼-- · 2019-12-12 08:12
我的程序是一个主机 四个 从机  如果他们全是c8t6的时候就能够通信,但是如果是VET6和C8T6之间通信的时候就会出错  什么情况呢? 急急急!
xjtyOnly51
4楼-- · 2019-12-12 11:02
 精彩回答 2  元偷偷看……
baoyt
5楼-- · 2019-12-12 13:13

mark, thanks
wildcat7261
6楼-- · 2019-12-12 17:09
学习了            

一周热门 更多>