完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于K60的UART通信智能车遥控车制作思路
Introduction 第十六届智能车竞赛取消了对K60芯片的使用,大量芯片论斤卖,发挥一下芯片的余热,基于上一次的UART串口通信内容,制作一辆遥控车。 硬件结构 智能车硬件 车上的板子就是实验室流传下来的板子,大致功能就是给电机、芯片供电以及接收UART串口信号实现单片机之间的双向通信。 遥控器硬件 遥控器是自己用洞洞板做的,飞了很多线。芯片用的是K60,供电用的是3.7V锂电池经过稳压芯片稳压后供电。 制作的模型仿照PS手柄,有侧边按键以及遥感,但是是非常的粗制滥造。 摇杆相当于电位器,要求是5V供电,但是单片机ADC信号采集只有3.3V,因此采用3.3V供电即可。另加入无线通信模块即可通过代码来实现单片机之间的通信。 代码部分 发送代码 代码发送很简单,只要调用山外库的uart_putchar函数就可以发送一个字节的数据了,但是一个字节是远远不够用的,因此可以把数据拆分成多个字节进行使用。如果一次发送多个字节的数据,因为发送端单片机是在一直发送,所以接收端就要识别数据的头和尾,因此接受代码就显得尤为重要。 接收代码 接受代码使用的是UART串口中断,因为uart_getchar函数如果没有接收到数据就会处于等待状态,单片机程序就会卡住。放到中断后,有数据到来时才执行这个函数,就不会导致程序的卡死。 众所周知,想要识别真正的数据,数据就要有头和尾。 方案一 一开始我使用了原子哥的STM32中UART串口通信实验的代码,但是接收到的数据效果十分不好,经过计算发现经常丢失一个字节,于是我就换了一种思路。 方案二 我在发送的数据的头部加入了两个八位校验码,也就是符号 { 和符号 【 ,因为如果只有一位,那么符号的ASCII码有可能和数据相同造成干扰,但是两位检验码出错的概率就会变小。当然,也可以找那些在数据范围以外的字符组合作为校验码,这样就会大大减小出错的概率。 注意事项 在实验中还发现OLED显示函数所占用的时间还是很大的,不能放到串口中断中,否则会造成程序的卡死。 |
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
2433 浏览 0 评论
3341 浏览 9 评论
3021 浏览 16 评论
3514 浏览 1 评论
9118 浏览 16 评论
1242浏览 3评论
635浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
627浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2372浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1936浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 01:04 , Processed in 1.182653 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号