MM32F5330 微控制器搭载了安谋科技授权的 Arm®v8-M 架构“星辰”STAR-MC1 内核(兼容 Cortex-M33)处理器,最高工作频率可达 180MHz。内置了 128KB Flash,32KB SRAM,所有 Flash 和 SRAM 配置 ECC,并集成了丰富的 I/O 端口和外设模块,包括 2 个 3MSPS 12 位的 ADC,1 个 12 位的 DAC,2 个模拟比较器,2 个 16 位高级定时器,2 个 16 位和 2 个 32 位通用定时器,2 个 16 位基础定时器和 1 个低功耗定时器,还包含通信接口如 2 个 I2C,1 个 I3C 从机,3 个 SPI 或 I2S,4 个 UART,1 个 USART,1 个低功耗 UART,1 个集成了内部 PHY 的 USB 2.0 全速 Device/Host 控制器,以及 1 个 FlexCANFD 接口。 兼容 CAN 2.0B 和 CAN-FD 协议。
FlexCANFD与CAN FD没有区别。FlexCANFD是CAN FD(Flexible Data Rate)协议的一个具体实现或变种,它继承了CAN FD协议的核心特性和优势。CAN FD协议是一种对传统CAN协议的扩展,旨在提高数据传输速率和数据量。具体来说,CAN FD协议与CAN协议区别:
- 数据传输速率:CAN协议通常支持最高1Mbps的数据传输速率,而CAN FD协议最高可达到12Mbps的数据传输速率,这使得CAN FD在高速通信环境下具有更高的可靠性和更短的响应时间。
- 传输格式:CAN协议使用一种基于帧的格式来传输数据,而CAN FD协议引入了一种新的帧格式,允许使用数据段长度达到64byte,比标准CAN协议使用的8byte数据段更大。
- 兼容性:CAN FD协议与CAN协议是向下兼容的,意味着支持CAN FD协议的设备可以与仅支持标准CAN协议的设备进行通信。但是,如果CAN FD设备要与标准CAN设备通信,则需要将CAN FD通信转换为标准CAN通信。FlexCANFD作为CAN FD的一个实现,同样具备上述特点,因此在技术层面上,FlexCANFD与CAN FD没有区别。它们都是为了提高汽车和其他工业应用中的通信效率和可靠性而设计。
- 基于基于MM32F533的智能高精度移动机器人开发,之所以选择MM32F533,在于工作电压为 1.8V ~ 5.5V,工作温度范围为扩展工业型 -40℃ ~ +105℃。这比STM32F4更宽的温度范围,适合苛刻的工控环境。内置多种省电工作模式保证低功耗应用的要求。FlexCAN 模块是一个通信控制器,遵循 ISO 11898-1 标准、CAN FD 和 CAN 2.0B 协议规范。
- 该模块支持标准和扩展帧,支持最大 64 字节有效负载,传输速率高达 8Mbps,并且具有非常灵活的用于传输和接收的邮箱系统。邮箱系统由 32 个报文缓冲区(MB)组成。报文缓冲区用于存储配置、控制数据、时间戳、报文 ID 以及数据(参见章节“报文缓冲区结构”)。和 MB 相对应的内存空间可以通过配置支持传统型 Rx FIFO 接收机制,该机制能够结合 ID 过滤表(高达 104 个扩展 ID 或 208 个标准 ID 或 416 个 8 位 ID)检测接收帧,并为高达 32 个 ID 表元素提供了私有掩码寄存器。 FlexCAN 支持 FIFO(经典 CAN 帧使用传统型 Rx FIFO;CAN FD 帧使用增强型 Rx FIFO)和邮箱同时接收。对于邮箱接收,通过匹配算法可以将接收到的帧只存储到具有相同 ID 的 MB 中。掩码机制能够将 MB 中设置的 ID 与一系列接收帧的 ID 进行匹配。传输时,仲裁算法基于报文的 ID(提供本地优先级可选)或 MB 的编号来决定待传输 MB 的优先级
- 基于MM32F533的智能高精度移动机器人开发拓扑结构:
- 基于CANFD总线技术设计,电气控制系统中能源控制模块、仪表显示模块、行走控制模块、割草控制模块和传感器模块通过CANFD模块及其接口完成信号的采集、接收、解析、处理和传输,提高了电动割草机集成度和信息处理效率,且通过CANFD总线的拓扑结构,拓展了整机的智能边界,为割草机的信息化和精准化控制提供了开发平台,具有开发周期短、开发成本低、整机开发平台化、模块化、信息化、智能化程度高的优势,解决了现存割草机信息化智能化程度低的问题,提供了割草机衍生品开发的电气控制方法和技术平台等,适合大范围的推广和应用。 根据CAN FD协议,定义用于电机控制的CAN FD帧格式,包括ID、数据长度和具体数据内容。这些数据内容包括目标位置、速度指令、扭矩请求等。
配置算法:
void FlexCAN_SendRemoteFrameMessage(uint32_t ID, uint8_t *Buffer, uint8_t Length)
{
flexcan_frame_t FlexCAN_FrameStruct;
flexcan_mb_transfer_t FlexCAN_MB_TransferStruct;
FlexCAN_FrameStruct.length = (uint8_t)Length;
FlexCAN_FrameStruct.type = (uint8_t)Enum_Flexcan_FrameTypeRemote;
FlexCAN_FrameStruct.format = (uint8_t)Enum_Flexcan_FrameFormatStandard;
FlexCAN_FrameStruct.id = FLEXCAN_ID_STD(ID);
FlexCAN_FrameStruct.dataByte0 = Buffer[0];
FlexCAN_FrameStruct.dataByte1 = Buffer[1];
FlexCAN_FrameStruct.dataByte2 = Buffer[2];
FlexCAN_FrameStruct.dataByte3 = Buffer[3];
FlexCAN_FrameStruct.dataByte4 = Buffer[4];
FlexCAN_FrameStruct.dataByte5 = Buffer[5];
FlexCAN_FrameStruct.dataByte6 = Buffer[6];
FlexCAN_FrameStruct.dataByte7 = Buffer[7];
FlexCAN_MB_TransferStruct.mbIdx = 12;
FlexCAN_MB_TransferStruct.frame = &FlexCAN_FrameStruct;
FLEXCAN_TransferSendNonBlocking(FLEXCAN, &FlexCAN_Handle, &FlexCAN_MB_TransferStruct);
}
/***********************************************************************************************************************
* @brief
* [url=home.php?mod=space&uid=536309]@NOTE[/url] none
* @param none
* @retval none
*********************************************************************************************************************/
void FlexCAN_FIFO_Interrupt_Sample(void)
{
uint8_t Buffer[8] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
printf("\r\nTest %s", __FUNCTION__);
FlexCAN_Configure();
while (1)
{
FlexCAN_SendStandardFrameMessage(0x214, Buffer, sizeof(Buffer));
//FlexCAN_SendExtendFrameMessage(0x215, Buffer, sizeof(Buffer));
PLATFORM_LED_Toggle(LED1);
PLATFORM_DelayMS(500);
}
}
RTK差分定位通过两个或多个GNSS接收器(一个基站和一个或多个流动站)同时观测卫星信号,利用基站已知的精确坐标和观测到的卫星信号,计算并发送差分改正数到流动站。流动站利用这些改正数对自身观测到的卫星信号进行修正,从而消除大部分公共误差,实现高精度定位。
在UM482/982 RTK系统中,单片机(或微控制器)主要负责接收和处理UM482/982模块输出的数据。这些数据包括原始观测数据(如伪距、载波相位等)和差分改正数等。单片机解析算法的主要任务包括:
产品视频
|