我的机器人制作流程

起兴

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
2025-11-24 23:55:13 星期一

写在前面

这篇博客方便知识点的记录和日后的学而时习之。笔者梦到哪里写到哪里,如有不对之处,请读者纠正见谅。

正文

这个机器人正式其实是从去年这个时间点开始做。但奈何一直拖到了现在,这段时间在训强化学习,那边我不能一直等着,因此使用空闲时间把这个历史遗留的问题给搞定。下面我将采用时间的方式一一记录每天遇到的问题及解决的事情。

2025.11.23

  • 电机采用达妙的8006,24V供电,下面使用USB转CAN总线进行校准测试,包括电机的一些参数
    image

image

  • 电机上位机读取要连接串口线,也就是一个CAN和一根串口线。
  • FDCAN的波特率设置。这里对应的在CUBEMX直接设置就可以了。一般FDCAN的波特率能高一些,比如1~8Mbps不等,而CAN一般最高也就1M了,我这先暂时使用1Mbps的。
    image
	/*	nominal_baud = 80M/brp/(1+seg1+seg2)
		sample point = (1+seg1)/(1+seg1+seg2)
		sjw :	1-128
		seg1:	2-256
		seg2: 	2-128
		brp :	1-512  */
  • 设置如下
    image

  • 软件层面的程序的记录:

image

image

image

2025.11.24

  • 其实昨天就已经能够跑通通信阶段了,主要原因是:一个函数的电机init前把所有电机参数都清理了,这是不对的;
  • 怀疑是enum导致的,但其实这东西就是数字,没差别;
  • 怀疑是extern,但是extren其实在一个头文件里定义过了就可以直接使用这个参数了,所以不是这个参数没有在我的main里没有初始化的原因;

2025.11.25

2025.11.27 W5500以太网通信模块使用

引用原文:链接

  • 连接方式:使用SPI连线。
  • OSI的几层结构表示。
    image
    应用层 + 操作系统层(包括传输网络层等) + 设备驱动层与网络接口层

先来看一下百度百科对于TCP协议的定义:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。这段文字是什么意思呢,我们再接着说上面一个例子。
发货之前工作人员首先得要确认一下路是不是通吧,比如现在是过年,物流全部停运不就是路不通吗,那还发什么货呀。要是没什么问题,物流全部正常运作就发货呗。手机到达小明家后,小明先拆开看看手机在运输途中有没有损坏,有损坏就联系客服处理,没问题就确认收货。再回到上面的定义中,面向连接指的是先建立连接再发送数据,也就是先确认路可以走得通再发货。可靠就是如果货物在运输过程中有损坏或者丢失就让京东重新发货,确保小明收到的手机是没有任何问题的。基于字节流的意思就是比如小明买了手机又买了手机配件,分开发货,几件物品不是在一个包裹里,一个一个发。在这个例子中,京东的工作人员和小明充当了TCP协议的角色,他们两个共同确保了货物的完整性。

  • socket
    程序也可以用IP+端口号进行唯一标识。那么这个程序的入口就被称作Socket。Socket不仅仅是IP+Port的封装,它还包含了协议和一些操作函数。Socket是一个抽象层,它提供了一种通用的接口,让应用程序可以使用不同的协议进行网络通信。Socket也不是一个方法,而是一个对象,它有自己的属性和方法。你可以创建一个Socket对象,然后调用它的方法来实现网络通信。
    image

  • w5500接口,通过以太网芯片进行数据的传输,上位机通过socket通信接收数据。
    image

这里注意一下h723系列板卡会优先定义IR这个宏,下面就不能用例程代码自带的宏。

当这个 IR 宏被包含进工程并扩展时,它不是一个变量或寄存器名,而是表达式 (0x00000000) + ...。
但在 ST 的 CMSIS 设备头文件 stm32h723xx.h 中,IR 被用作结构体成员名称(如 FDCAN、CCU、OCTOSPI 模块中的中断寄存器):

总结

to be continued...

posted @ 2025-11-27 16:12  泪水下的笑靥  阅读(1)  评论(0)    收藏  举报