这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 国民技术N32G401C8L7学习记录二:学习串口通讯知识

共2条 1/1 1 跳转至

国民技术N32G401C8L7学习记录二:学习串口通讯知识

助工
2024-11-20 18:55:14     打赏

一:串口知识分享

1.1串口知识

通用同步异步收发器(USART)是一种全双工串行数据交换接口,支持同步或异步通信。可灵活配置,以便于与多种外部设备进行全双工数据交换。

USART 接口发送与接收波特率可配置,也支持通过 DMA 进行连续通信。 USART 还支持多处理器通信、LIN 模式、同步模式、单线半双工通信、智能卡异步协议、 IrDA SIR ENDEC 功能、以及硬件流控制功能。 

1.2 串口特性

支持全双工通信

支持单线半双工通信

波特率可配置,最高波特率可达 4Mbit/s

支持 8bit 或 9bit 数据帧

支持 1bit 或 2bit 停止位 

支持硬件生成校验位及校验位检查

支持硬件流控: RTS、 CTS

支持 DMA 收发

支持多处理器通信:如果地址不匹配,则进入静默模式, 可通过空闲总线检测或地址标识唤醒

支持同步模式,允许用户在主模式下控制双向同步串行通信

支持智能卡异步协议,符合 ISO7816-3 标准

串行红外协议(IrDA SIR)编码与解码,提供正常与低功耗两种运行模式

支持 LIN 模式

支持多钟错误检测:数据溢出错误、帧错误、噪声错误、检验错误

支持多个中断请求:发送数据寄存器为空、 CTS 标志、发送完成、数据已接收、数据溢出、总线空闲、

检验错误、 LIN 模式断开帧检测、以及多缓冲区通信中的噪声标志/溢出错误/帧错误 

1.3 硬件连接

image.png

需要将板载的PA9,PA10引脚利用跳线帽安装到调试器的串口1上面,这样我们就可以使用板载USB接口查看串口发出的数据了。

1.4软件控制流程

步骤1:串口时钟使能,GPIO时钟使能,使能串口时钟:    

GPIO_AHBClkCmd(USARTx_GPIO_CLK);

USART_APBxClkCmd(USARTx_CLK);

步骤2:GPIO端口模式设置:  GPIO_Configuration();  //此处注意使用的IO口是否正常,是否需要映射。

步骤3:串口参数初始化:USART_Init(); //初始化,波特率,停止位,校验位等信息

步骤4:开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

      NVIC_Init();

      USART_ITConfig();

步骤5:使能串口:    USART_Enable(USARTx);

步骤6:编写中断处理函数:UART1_IRQHandler();

这里将串口1映射到Printf函数中:配置信息如下:

int fputc(int ch, FILE* f)
{
    USART_Data_Send(USARTx, (uint8_t)ch);
    while (USART_Flag_Status_Get(USARTx, USART_FLAG_TXDE) == RESET)
        ;
 
    return (ch);
}

主函数:

 RCC_ClocksType RCC_ClocksStatus;
    
    /* System Clocks Configuration */
    RCC_Configuration();
 
    /* Configure the GPIO ports */
    GPIO_Configuration();
 
    RCC_Clocks_Frequencies_Value_Get(&RCC_ClocksStatus);
    /* USARTy and USARTz configuration ------------------------------------------------------*/
    USART_InitStructure.BaudRate            = 9600;
    USART_InitStructure.WordLength          = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;
 
    /* Configure USARTx */
    USART_Initializes(USARTx, &USART_InitStructure);
    /* Enable the USARTx */
    USART_Enable(USARTx);
 
    /* Output a message on Hyperterminal using printf function */
//   printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");
 
    while (1)
    {

printf("\n\r学习国产32单片机之路------------keyboard007\n\r");


SysTick_Delay_Ms(500);
}

二:利用E32模块接收发送串口数据

2.1:E32模块模块资料:

该电路只需将模块的TXD 与 RXD 连接到 MCU的RXD和TXD即可。

E32模块是基于SX1278射频芯片的贴片型无线串口模块(TTL电平),透明传输方式,发射功率100MW,工作在410-441MHZ频段,采用LORA扩频技术。

SX1278支持LORA扩频技术,通讯距离远,抗干扰能力强的优势,同时有极强的保密性。模块具有数据加密和压缩功能,模块在空中传输的数据,具有随机性,通过严密的加解密算法,使得数据截获失去意义。而数据压缩功能有概率减小传输时间,减少受干扰的概率,提高可考性和传输效率。

模块的工作参数

image.png

image.png

image.png

硬件的连接图如下:

image.png

此处注意一下:将板载调试器的PA9,PA10的两根线断开,否则对串口传输会有影响。

然后利用自制的接收模块连接上电脑,查看一下接收到的数据。

接收模块图片如下:

image.png

image.png






关键词: 国民     学习     串口    

高工
2024-11-22 14:30:59     打赏
2楼

串口的功能还是蛮多的啊!

感觉咱们平时仅使用了其最简单的一种


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]