极海半导体(APM)的APM32F035是一款面向电机驱动市场推出的高性能、高性价比的电机控制专用MCU(微控制器)。它支持单周期32位硬件乘法器,内置M0CP协处理器,并集成了高速ADC(模数转换器)、运放、比较器及CAN控制器等外设资源。
关于极海APM32F035的串口(Serial Port)通信功能,这通常是一个用于与外部设备进行数据交换的重要接口。串口通信是一种常用的通信方式,它允许设备之间进行数据的串行传输。然而,具体的串口配置、波特率(baud rate)、数据位(data bits)、停止位(stop bits)和校验位(parity)等参数可能会因应用需求而有所不同。
为了获取关于极海APM32F035串口通信的详细信息,包括其支持的串口类型(UART、SPI、I2C等)、通信协议、硬件连接方式和编程接口等,提供详细的硬件规格、编程指南和示例代码,更好地理解和使用APM32F035的串口通信功能。
下面开始串口测评。
串口连接端口:
了解硬件原理图:
梅工极海APM32F035低压电机通用评估板+串口极海半导体(APM)的APM32F035是一款面向电机驱动市场推出的高性能、高性价比的电机控制专用MCU(微控制器)。它支持单周期32位硬件乘法器,内置M0CP协处理器,并集成了高速ADC(模数转换器)、运放、比较器及CAN控制器等外设资源。
关于极海APM32F035的串口(Serial Port)通信功能,这通常是一个用于与外部设备进行数据交换的重要接口。串口通信是一种常用的通信方式,它允许设备之间进行数据的串行传输。然而,具体的串口配置、波特率(baud rate)、数据位(data bits)、停止位(stop bits)和校验位(parity)等参数可能会因应用需求而有所不同。
为了获取关于极海APM32F035串口通信的详细信息,包括其支持的串口类型(UART、SPI、I2C等)、通信协议、硬件连接方式和编程接口等,提供详细的硬件规格、编程指南和示例代码,更好地理解和使用APM32F035的串口通信功能。
下面开始串口测评。
了解硬件原理图:
MCU连接引脚:
串口使用的寄存器:
寄存器映射:
在数据手册中,关于串口模块(UART或其他类型)的详细章节,其中包含了寄存器的名称、地址、功能描述以及如何使用它们进行配置和控制的说明。这些寄存器可能包括:
配置寄存器:用于设置串口通信的基本参数,如波特率生成器、数据格式等。
控制寄存器:用于启动和停止串口通信,以及控制中断和其他高级功能。
状态寄存器:反映串口当前的状态,如发送/接收缓冲区状态、错误标志等。
数据寄存器:用于读取接收到的数据或写入要发送的数据。
代码:
typedef struct { uint32_t baudRate; /*!< Specifies the baud rate */ //baudRate 成员是一个无符号32位整数,用于指定波特率。波特率是串行通信中每秒传输的符号数,它决定了数据传输的速度。 USART_WORD_LEN_T wordLength; /*!< Specifies the word length */ //wordLength 成员是一个枚举类型(或类型定义),用于指定数据位的长度。数据位是通信中每个字符或符号的实际内容。 USART_STOP_BITS_T stopBits; /*!< Specifies the stop bits */ //stopBits 成员是一个枚举类型,用于指定停止位的数量。停止位用于标记每个数据包的结束。 USART_PARITY_T parity; /*!< Specifies the parity */ //parity 成员是一个枚举类型,用于配置校验位。校验位用于在串行通信中检测数据错误,可以设置为无校验、奇校验或偶校验。 USART_MODE_T mode; /*!< Specifies the mode */ //mode 成员是一个枚举类型,用于设置USART的工作模式,比如是异步模式还是同步模式,是否启用接收或发送等。 USART_HARDWARE_FLOW_CTRL_T hardwareFlowCtrl; //hardwareFlowCtrl 成员是一个枚举类型,用于配置硬件流控制。硬件流控制通常通过RTS(请求发送)和CTS(清除发送)信号来防止数据溢出接收缓冲区。 } USART_Config_T; //USART_Config_T 是这个结构体的类型名称,之后可以用这个类型来定义变量,存储USART的配置信息。// USART_Write 函数定义,它接收一个指向USART_T结构体的指针(用于指定USART模块)和一个指向uint8_t类型数据的指针(要发送的字符串) void USART_Write(USART_T* usart, uint8_t* dat) { // 启用USART的发送完成中断(TXCIE,即Transmit Complete Interrupt Enable) // 注意:这里使用的MINI_COM2可能是一个预定义的USART模块标识,而不是通用传入的usart指针 /* Enable USART_INT_TXCIE*/ USART_EnableInterrupt(MINI_COM2, USART_INT_TXCIE); // 循环直到字符串的当前字符为NULL(字符串结束) while (*dat) { // 循环等待直到USART的发送缓冲区为空(TXBE,即Transmit Buffer Empty) // RESET通常表示一个标志位未被设置,即发送缓冲区不为空 while (USART_ReadStatusFlag(usart, USART_FLAG_TXBE) == RESET); // 发送当前字符到USART,并递增指针到下一个字符 USART_TxData(usart, *dat++); } // 禁用USART的发送完成中断 // 同样,这里使用了MINI_COM2而不是传入的usart指针,这可能是一个错误或特定于代码上下文的实现 USART_DisableInterrupt(MINI_COM2, USART_INT_TXCIE); } 输出代码: USART_Write(MINI_COM2, (uint8_t*)"xcc APM32F035 MOTOR EVAL\r\n");
输出实际结果:
总结:
极海APM32F035是一款微控制器,丰富的外设接口,包括串口(USART)通信。下面是一些常见的串口问题点总结:
配置问题:
波特率设置不正确:发送方和接收方的波特率必须一致,否则通信会失败。
数据位、停止位、校验位不匹配:双方串口配置必须完全一致,包括数据位长度(通常为8位)、停止位数量(通常为1位)以及是否启用校验位。
我出现最多的是乱码,刚开始的时候乱码。
硬件连接问题:
串口线连接错误:TX(发送)和RX(接收)线需要正确连接,否则通信无法建立。
有两个跳帽没有接上。