Cortex_M核关于UART串口电平参数

RS232的两端电平分别为LV-TTL和EIA电平

  1. 在CORTEX-M上UART或USART发送数据,计划输出0xAA,0xEB , 0x55十六进制转二进制:
    0b1010_1010, b1110_1011,0x0101_0101
    码流1
  2. 在一个起始位,无奇偶校验,一个停止位;
    实际的TTL序列:无数据时为高电平,下降沿触发。
    起始位【低电平】+数据【逆序】+停止位【高电平】;

码流1得出实际物理TTL码流2

0_01010101_1 0_11010111_1 0_10101010_1; 码流2

EIA与LVTTL电平关系

------逻辑<正>“1”逻辑<负>“0”
EIA-3V~-15V3V~15V
LV-TTL3.3V0V

由于EIA电平为反逻辑,在实际的MAX232器件的输出端有如下特点:

1、 默认空闲无数据,TX数据线低电平即-3~-15V,[实际测得MAX3232e为 -5.7V]
2、 变换码流2可得:

1_10101010_0 1_00101000_0 1_01010101_0 码流3
【这里的“1”表示低电平,反逻辑】

在这里插入图片描述在这里插入图片描述
前两字节已说明问题,不在画出第三字节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HC32L130是一款基于ARM Cortex-M3内的微控制器,它具有多种外设模块,其中包括UART串口通信模块。以下是在HC32L130上使用UART串口通信的基本步骤: 1. 配置GPIO引脚 UART串口通信需要使用两个GPIO引脚,一个用于发送数据(TXD),一个用于接收数据(RXD)。在使用UART串口通信之前,需要配置这两个引脚的功能以及引脚的输出电平。例如,将PA2配置为TXD引脚,将PA3配置为RXD引脚,代码如下: ```c /* 使能GPIOA时钟 */ CM_AHBCLKEN0 |= CM_AHBCLKEN0_GPIOAEN; /* 配置PA2为复用功能 */ GPIOA->AFR[0] &= ~(GPIO_AFRL_AFSEL2); GPIOA->AFR[0] |= (0x01u << GPIO_AFRL_AFSEL2_Pos); /* 配置PA3为复用功能 */ GPIOA->AFR[0] &= ~(GPIO_AFRL_AFSEL3); GPIOA->AFR[0] |= (0x01u << GPIO_AFRL_AFSEL3_Pos); /* 配置PA2为推挽输出 */ GPIOA->PDDR |= GPIO_PDDR_PDD2; /* 配置PA3为上拉输入 */ GPIOA->PDDR &= ~(GPIO_PDDR_PDD3); GPIOA->PDIR &= ~(GPIO_PDIR_PDI3); GPIOA->PDOR |= GPIO_PDOR_PDO3; ``` 2. 配置UART模块 在使用UART串口通信之前,需要配置UART模块的工作参数,例如波特率、数据位数、停止位数等等。以下是一个简单的配置UART模块的示例代码: ```c /* 使能UART0时钟 */ CM_PERCLKEN0 |= CM_PERCLKEN0_UART0EN; /* 配置UART0时钟源 */ CLK_CFG1 &= ~(CLK_CFG1_UART0SEL_Msk); CLK_CFG1 |= (0x01u << CLK_CFG1_UART0SEL_Pos); /* 配置UART0波特率 */ UART0->BAUD = 0x1D4C; /* 波特率为115200 */ /* 配置UART0数据格式 */ UART0->LCR = UART_LCR_WLS_8BIT | UART_LCR_STB_1BIT | UART_LCR_PEN_NO; ``` 3. 发送和接收数据 在UART串口通信中,发送和接收数据需要使用UART模块的数据寄存器和状态寄存器。以下是一个简单的发送和接收数据的示例代码: ```c /* 发送数据 */ while (!(UART0->LSR & UART_LSR_TDRQ)); UART0->TDR = 'H'; while (!(UART0->LSR & UART_LSR_TDRQ)); UART0->TDR = 'e'; while (!(UART0->LSR & UART_LSR_TDRQ)); UART0->TDR = 'l'; while (!(UART0->LSR & UART_LSR_TDRQ)); UART0->TDR = 'l'; while (!(UART0->LSR & UART_LSR_TDRQ)); UART0->TDR = 'o'; /* 接收数据 */ while (!(UART0->LSR & UART_LSR_RDRF)); uint8_t data = UART0->RDR; ``` 以上是基本的UART串口通信的使用方法,具体的实现还需要根据具体的应用场景进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值