
嵌入式应用
文章平均质量分 78
TamSom
这个作者很懒,什么都没留下…
展开
-
单线激光雷达驱动
开篇在基于lwip协议栈搭建好tcp或udp通讯后,我们就可以开始用板载网口与雷达通信了,目前先将接收到的雷达数据在udp接收回调函数中进行转存。一、雷达协议介绍雷达作为udp服务器端,发送广播信号到另一端,当平台设置好同一网段IP,并开启广播接收后,嵌入式端就能接收到udp广播数据报。其中,所使用的激光雷达数据包如下所示:由于先前设置了激光雷达的扫描频率为20Hz,且雷达扫描的角度为270°,雷达开发者将其分为8个块,每个块33.75°,在扫描频率20Hz情况下,每个块有144个点,且各个点分布原创 2021-06-07 16:28:47 · 1451 阅读 · 2 评论 -
嵌入式平台lwip协议栈的udp通讯搭建
开篇介绍上一节介绍了,在移植lwip协议栈到嵌入式平台后,成功搭建了tcp通讯;后续因为项目开发需要,为了简化tcp报文繁琐的解析过程,节省片上资源,更加专注于数据处理,我们选择牺牲一定的通讯严谨性来达到资源最优化,毕竟项目是属于本地局域网直连。两者区别:TCP与UDP一样,都是传输层的协议,但是提供的服务却不同。UDP为上层应用提供的是一种不可靠、无连接的服务,而TCP则提供一种面向连接、可靠的字节流传输服务,TCP让两个主机建立连接的关系,应用数据以数据流的形式进行传输,这与UDP是不一样的。U原创 2021-05-19 21:08:08 · 1262 阅读 · 4 评论 -
嵌入式平台lwip协议栈的tcp通讯搭建
开篇在配置好数据链路层和网络层后,接下来就是搭建tcp通讯了,在lwip协议栈中,有三种通讯方式,1.raw;2.Netconn;3.socket;本节先从raw_api开始,lwip协议栈提供了tcp.c/.h给用户使用。一、tcp块创建由于雷达是作为服务端的,因此我们要将开发板配置为客户端模式,主动对雷达发起链接。在上一节的基础上,所有东西正常后,我们启动了网卡,接下来做一个2秒的延时,等待网卡启动完成,然后我们可以开始搭建tcp了。首先,这里先创建tcp块,若创建成功,载入远程服务端的I原创 2021-05-13 17:37:34 · 1032 阅读 · 2 评论 -
STM32H7+LAN8720A之ETH与LWIP配置问题(End)
开篇介绍由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。一、激光雷达3i-T1由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配原创 2021-04-12 16:36:26 · 15518 阅读 · 10 评论 -
局部变量之堆栈溢出问题
开篇介绍由于项目开发过程中用到了一款开源的伺服步进电机,步进电机的开源代码里面涉及了步进电机的编码器校正(或电机标定),并已经把编码器校正后的值存到了主控芯片stm32F030的后32Kflash里面。然而自身项目使用中需要知道步进电机的上机零点还有电机各个时刻所转的角度,因此,需要对电机的编码器校正值进行一个地址偏移处理,于是地址偏移的大小则是上机零点的编码器值。由于过程中涉及了大量的flash读写操作以及一些衍生的问题,由此产生了该篇博客,意在讨论一下嵌入式平台的Flash读写操作以及修改,还有局部变原创 2021-03-07 21:13:03 · 1991 阅读 · 4 评论 -
(End)STM32H7串口空闲中断接收+DMA调试(HAL库)
一、工具介绍由于项目开发原因要用到STM32H7系列的微控制器,为了缩短项目开发周期和提高效率,采用了ST官方的STM32CubeIDE进行开发,这个集成开发环境的特点主要有:1.从硬件电路设计开始为硬件工程师提供的各个管脚IO功能的映射及功能,方便硬件电路的设置与布局;2.可视化的硬件配置使得已经掌握单片机编程的使用者更加高效开发,只需注重于项目或系统自身功能部分的实现即可。但不得顺带提一下该开发平台的不友好性:区别于STM32官方的std标准库,可视化配置采用了ST自主封装的HAL库(或者有的称为L原创 2021-01-24 22:02:38 · 9055 阅读 · 2 评论