HOLTEK HT32 MCU UART Application Note Manual de usuario
Introdución
O receptor/transmisor asíncrono universal - UART é unha interface de transmisión en serie amplamente utilizada que ofrece transmisión de datos full-duplex asíncrona flexible. O código de aplicación "Module_UART" proporcionado nesta nota da aplicación usa interrupcións TX/RX con búfers de anel de software para implementar funcións sinxelas de transmisión/recepción UART a través de API, cuxas funcións relacionadas se describen a continuación. Isto simplificará todo o proceso de transmisión de datos e permitirá aos usuarios comprender e implementar rapidamente as aplicacións de comunicación UART.
- Funcións de transmisión/recepción: lectura de bytes, escritura de bytes, lectura de búfer, escritura de búfer, etc.
- Funcións de estado: obter a lonxitude do buffer, o estado TX, etc.
Este documento presentará primeiro o protocolo de comunicación UART, que axudará aos usuarios a comprender mellor a comunicación UART desde o principio ata a aplicación. Isto é seguido pola descarga e preparación dos recursos necesarios para o código da aplicación, incluíndo a biblioteca de firmware, a descarga do código da aplicación, file e configuración do directorio, así como unha introdución á ferramenta de software do terminal utilizada na nota da aplicación. No capítulo Descrición funcional, presentarase a estrutura do directorio do código da aplicación, a configuración dos parámetros e a descrición da API. O uso da API describirase mediante o código de aplicación "Module_UART" e tamén se enumerará o consumo de recursos Flash/RAM necesarios para as API. O capítulo de Instrucións de uso guiará ao usuario nos pasos de preparación ambiental, compilación e proba para confirmar que o código da aplicación funcionará correctamente. A continuación, proporcionará instrucións que explican como integrar as API nos proxectos do usuario e, finalmente, proporcionará unha referencia para as modificacións e problemas comúns que se poidan atopar.
Abreviaturas empregadas:
- UART: Receptor/Transmisor asíncrono universal
- API: Interfaz de programación de aplicacións
- LSB: Bit menos significativo
- MSB: Bit máis significativo
- PC: Ordenador persoal
- SK: Kit de inicio, placa de desenvolvemento HT32
- IDE: Entorno de Desenvolvemento Integrado
Protocolo de comunicación UART
O UART é un tipo de interface de comunicación en serie que implementa a conversión de datos paralelo a serie no seu transmisor e despois se comunica en serie cun receptor similar. Despois da recepción de datos, o receptor realiza unha conversión de datos de serie a paralelo. A figura 1 mostra un diagrama esquemático da comunicación en serie que mostra como se transfiren os datos nunha orde bit a bit. Polo tanto, para a comunicación bidireccional entre o transmisor e o receptor, só son necesarios dous cables, TX e RX, para transferir datos en serie entre si. TX é o pin no que o UART transmite os datos en serie e está conectado ao pin RX do receptor. Polo tanto, os dispositivos transmisor e receptor necesitan conectar os seus pines TX e RX para realizar comunicación bidireccional UART, como se mostra en Figura 2.
Figura 1. Diagrama de comunicación en serie
Figura 2. Diagrama de circuíto UART
Durante a comunicación en serie UART, a transmisión de datos é asíncrona. Isto significa que non hai ningún reloxo nin outro sinal de sincronización entre o transmisor e o receptor. Aquí utilízase unha velocidade en baudios, que é a velocidade de transmisión/recepción de datos en serie e que se establecen por ambos os dous lados antes das transferencias de datos. Ademais, engádense bits especiais como os bits de inicio e de parada ao principio e ao final do paquete de datos para formar un paquete de datos UART completo. A Figura 3 mostra a estrutura do paquete de datos UART mentres que a Figura 4 mostra un paquete de datos UART de 8 bits sen un bit de paridade.
Figura 3. Estrutura do paquete de datos UART
Figura 4. Formato de paquete de datos UART de 8 bits
Cada parte do paquete de datos UART introdúcese na orde a continuación.
- Bit de inicio: Isto indica o inicio dun paquete de datos. O pin UART TX adoita permanecer nun nivel lóxico alto antes de que comece a transmisión. Se se inicia a transmisión de datos, o transmisor UART tirará o pin TX de alto a baixo, é dicir, de 1 a 0, e despois manterao alí durante un ciclo de reloxo. O receptor UART comezará a ler datos cando se detecte unha transición alta a baixa no pin RX.
- Datos: Estes son os datos reais transferidos, cunha lonxitude de datos de 7, 8 ou 9 bits. Os datos adoitan transferirse primeiro co LSB.
- Bit de paridade: O número de lóxica "1" dos datos úsase para determinar se algún dato cambiou durante a transmisión. Para a paridade par, o número total de lóxica "1" nos datos debe ser un número par, pola contra, o número total de lóxica "1" nos datos debe ser un número impar para a paridade impar.
- Bit de parada: Isto indica o final dun paquete de datos, onde o transmisor UART tirará o pin TX de baixo a alto, é dicir, de 0 a 1, e despois mantelo alí durante un período de tempo de 1 ou 2 bits.
Como se mencionou anteriormente, dado que non hai sinal de reloxo no circuíto UART, a mesma velocidade de transmisión/recepción de datos en serie, que se coñece como velocidade en baudios, debe definirse entre o transmisor e o receptor para implementar unha transmisión sen erros. A velocidade en baudios defínese polo número de bits transferidos por segundo, en bps (bit por segundo). Algunhas velocidades en baudios estándar e de uso habitual son 4800bps, 9600bps, 19200bps, 115200bps, etc. A continuación móstrase o tempo correspondente necesario para transferir un único bit de datos.
Táboa 1. Velocidade en baudios fronte ao tempo de transmisión de 1 bit
Velocidade en baudios | Transmisión de 1 bit Tempo |
4800 bps | 208.33 µs |
9600 bps | 104.16 µs |
19200 bps | 52.08 µs |
115200 bps | 8.68 µs |
Descarga e preparación de recursos
Neste capítulo presentarase o código da aplicación e a ferramenta software utilizada, así como como configurar o directorio e file camiño.
Biblioteca de firmware
En primeiro lugar, asegúrese de que se descargou a biblioteca de firmware Holtek HT32 antes de usar o código da aplicación. A ligazón de descarga móstrase a continuación. Aquí hai dúas opcións, HT32_M0p_Vyyyymmdd.zip para a serie HT32F5xxxx e HT32_M3_Vyyyymmdd.zip para a serie HT32F1xxxx. Descarga e descomprime o desexado file.
O zip file contén varios cartafoles que se poden clasificar como Documento, Biblioteca de firmware, Ferramentas e outros elementos, cuxa ruta de colocación móstrase na Figura 5. O zip da biblioteca de firmware HT32 file con a file o nome de HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip atópase no cartafol Firmware_Library.
Figura 5. Contido HT32_M0p_Vyyyymmdd.zip
Código de aplicación
Descarga o código da aplicación na seguinte ligazón. O código da aplicación está empaquetado nun zip file con a file nome de HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Ver Figura 6 para o file convencións de nomes.
Figura 6. Código de aplicación File Nome Introdución
Link de descarga: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File e Configuración do directorio
Como o código da aplicación non contén a biblioteca de firmware HT32 files, o código da aplicación e a biblioteca de firmware descomprimidos files debe colocarse no camiño correcto antes de comezar a compilación. O código zip da aplicación file normalmente contén un ou máis cartafoles, como aplicación e biblioteca, como se mostra na Figura 7. Coloque o cartafol da aplicación baixo o directorio raíz da biblioteca de firmware HT32 para completar o file configuración de ruta, como se mostra na Figura 8. Como alternativa, descomprime o código da aplicación e a biblioteca de firmware HT32 simultaneamente no mesmo camiño para conseguir os mesmos resultados de configuración.
Figura 7. Contido de HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Figura 8. Camiño de descompresión
Software de terminal
O código da aplicación pode transferir mensaxes a través do porto COM para implementar a selección de funcións ou a visualización de estado. Isto require que o host teña o software do terminal instalado previamente. Os usuarios poden escoller o software de conexión axeitado ou usar software con licenza gratuíta como Tera Term. No código da aplicación, a canle UART está configurada cunha lonxitude de palabra de 8 bits, sen paridade, 1 bit de parada e unha velocidade de transmisión de 115200 bps.
Descrición funcional
Este capítulo proporcionará unha descrición funcional do código da aplicación, incluíndo información sobre a estrutura do directorio, a arquitectura da API, a descrición da configuración, etc.
Estrutura do directorio
O código da aplicación file contén un cartafol de aplicacións. A seguinte capa é o cartafol "Module_UART" que contén dous programas de aplicación, "UART_Module_Example" e "UART_Bridge". O relevante files están listados e descritos a continuación.
Táboa 2. Estrutura do directorio de códigos da aplicación
Cartafol / File Nome | Descrición |
\\aplicación\Module_UART\UART_Module_Example*1 | |
_CrearProxecto.bat | Scripts por lotes para crear proxectos files |
_ProjectSource.ini | Inicialización file para engadir código fonte aos proxectos |
ht32_board_config.h | Configuración file relacionados coa asignación de E/S periféricos de IC |
ht32fxxxxx_01_it.c | Interrupción do programa de servizo file |
principal.c | Código fonte do programa principal |
\\aplicación\Module_UART\UART_Bridge*2 | |
_CrearProxecto.bat | Scripts por lotes para crear proxectos files |
_ProjectSource.ini | Inicialización file para engadir código fonte aos proxectos |
ht32_board_config.h | Configuración file relacionados coa asignación de E/S periféricos de IC |
ht32fxxxxx_01_it.c | Interrupción do programa de servizo file |
principal.c | Código fonte do programa principal |
uart_bridge.h uart_bridge.c | Cabeceira da ponte UART file e código fonte file |
\\utilidades\middleware | |
uart_module.h*3 uart_module.c*3 | Cabeceira da API file e código fonte file |
\\utilidades\común | |
ringbuffer.h ring_buffer.c | Cabeceira do búfer de anel do software file e código fonte file |
Nota:
- No módulo "UART_Module_Example", as operacións de lectura e escritura da API realízanse de forma loopback, consulte "Ex.amples” para máis detalles.
- No código de aplicación "UART_Bridge" actívanse dúas canles UART, UART CH0 e UART CH1, e impléntanse un protocolo de comunicación personalizado a través das estruturas COMMAND entre os dous dispositivos UART. Para obter máis información, consulte o "Uso de API Exampsección les".
- O código da aplicación necesita usar o uart_module.c/h files que teñen un requisito de versión da biblioteca de firmware. O requisito pode cambiar de cando en vez segundo a actualización. Para confirmar o requisito da versión actual da biblioteca de firmware, consulte o contido da comprobación de dependencias buscando a palabra clave "Comprobación de dependencias" no main.c file. Se a versión da biblioteca de firmware non cumpre os requisitos, descargue a versión máis recente desde a ligazón que se ofrece na sección "Biblioteca de firmware".
Arquitectura API
Cada API ten un parámetro importante CH, que é a canle UART. Isto determina que canle UART se debe controlar. Actualmente son compatibles ata catro canles UART e, polo tanto, defínense catro símbolos constantes como segue. Estes utilízanse como parámetro CH proporcionando ás API a base para o control.
- UARTM_CH0: parámetro de entrada: controle ou configure UART CH0
- UARTM_CH1: parámetro de entrada: controle ou configure UART CH1
- UARTM_CH2: parámetro de entrada: controle ou configure UART CH2
- UARTM_CH3: parámetro de entrada: controle ou configure UART CH3
O espazo de memoria non se desperdiciará se só se utiliza unha canle UART. Isto débese a que se pode establecer o número de canles UART compatibles e o código de canle UART non utilizado será eliminado polo preprocesador para aumentar o espazo de memoria dispoñible. A arquitectura da API móstrase en Figura 9.
Figura 9. Diagrama de bloques da arquitectura API
Cada API está composta por catro grupos de configuracións ou controis relacionados coa canle UART para que os usuarios só teñan que introducir o parámetro CH desexado. Para configurar a API relevante, só é necesario ter unha táboa de parámetros de configuración básica UART adicional co formulario de estrutura, USART_InitTypeDef. A API implementará a configuración básica de UART segundo o contido do parámetro da táboa. Consulte a sección "Descrición da API" para a táboa de estrutura de configuración básica de UART.
O módulo uart_module.c/.h files só conteñen a interrupción (CHx_IRQ) e a táboa de estado (CHx Status) de cada canle UART mentres que ht32_board_config.h proporciona todos os axustes necesarios para a comunicación UART. Os parámetros relevantes de hardware no ht32_board_config.h file móstranse na seguinte táboa. Ofrécense máis detalles na sección "Descrición da configuración".
Os parámetros relevantes de hardware no ht32_board_config.h inclúen a configuración de E/S e a configuración do porto UART físico, como segue.
Táboa 3. Definición Símbolos en ht32_board_config.h
Símbolo | Descrición |
HTCFG_UARTM_CH0 | Nome do porto UART físico; Example: UART0, UART1... |
HTCFG_UARTM0_TX_GPIO_PORT | Define o nome do porto de TX para CH0; Example: A, B, C... |
HTCFG_UARTM0_TX_GPIO_PIN | Define o número de pin de TX para CH0; Example: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Define o nome do porto de RX para CH0; Example: A, B, C... |
HTCFG_UARTM0_RX_GPIO_PIN | Define o número de pin de TX para CH0; Example: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Define o tamaño do buffer TX para CH0; Exampnúmero: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Define o tamaño do buffer RX para CH0; Exampnúmero: 128 |
Para modificar a configuración AFIO da canle UART, consulte a folla de datos do dispositivo correspondente. Actualmente só entran en vigor as definicións de E/S para UART CH0 xa que só se configurou UART CH0 en ht32_board_config.h. Para engadir UART CH1~3, as súas definicións de E/S deben completarse facendo referencia á definición de UART CH0 ou consultando a sección "Configuración de modificacións e preguntas frecuentes".
Hai tres características principais da arquitectura API:
- Admítense ata catro canles UART. Os seus parámetros de entrada son UARTM_CH0, UARTM_CH1, UARTM_CH2 e UARTM_CH3.
- Pódese establecer o número de canles UART e as canles non utilizadas non reducirán o espazo de memoria dispoñible.
- Toda a configuración de UART e as definicións de E/S están completamente separadas das API. Isto aumenta a comodidade de xestión de establecer valores e reduce a posibilidade de que falten ou falten axustes incorrectos.
Descrición da configuración
Esta sección presentará a configuración dos parámetros en ht32_board_config.h e uart_module.h files.
- ht32_board_config.h: Isto file úsase para definicións de pin e configuracións relevantes da tarxeta de desenvolvemento, que inclúen a canle IP UART (UART0, UART1, USART0...) utilizada polo Starter Kit (SK), as localizacións de pines TX/RX correspondentes e o tamaño do buffer TX/RX. A Figura 10 mostra o contido da configuración do kit de inicio HT32F52352. Dependendo da integración funcional do desenvolvemento, os usuarios poden consultar a sección "Asignación de pins" da folla de datos do dispositivo utilizado para implementar as definicións de pin. Descriranse máis detalles sobre a modificación da configuración na sección "Modificación da configuración e preguntas frecuentes".
Figura 10. Configuración de ht32_board_config.h (HT32F52352)
- uart_module.h: Esta é a cabeceira da API file usado polo código da aplicación, que inclúe a configuración predeterminada relevante, definicións de funcións, etc. Como se mostra na Figura 11, o contido da configuración predeterminada pode sobrescribirse por configuracións externas, como a configuración do ht32_board_config.h file.
Figura 11. Configuración predeterminada en uart_module.h
Descrición da API
- Descrición do tipo de datos do código da aplicación.
- USART_InitTypeDef
Esta é a estrutura de configuración básica de UART que está composta por configuracións BaudRate, WordLength, StopBits, Parity e Mode, como se mostra a continuación.Variable Nome Tipo Descrición USART_BaudRate u32 Velocidade en baudios de comunicación UART USART_Lonxitude da palabra u16 Longitud da palabra de comunicación UART: 7, 8 ou 9 bits USART_StopBits u16 Longitud de bit de parada de comunicación UART: 1 o 2 bits USART_Parity u16 Paridade de comunicación UART: par, impar, marca, espazo ou sen paridade USART_Mode u16 modo de comunicación UART; as API só admiten o modo normal
- USART_InitTypeDef
- Antes de usar as funcións da API, complete a configuración básica de UART no programa principal. A configuración básica de UART para este código de aplicación móstrase na Figura 12. Aquí a velocidade en baudios é de 115200 bps, a lonxitude da palabra é de 8 bits, a lonxitude do bit de parada é de 1 bit e non hai paridade.
Figura 12. Configuración básica de UART
- A Figura 13 mostra as funcións da API declaradas no uart_module.h file. As seguintes táboas explican a función, os parámetros de entrada e o uso das funcións da API.
Figura 13. Declaracións de funcións da API en uart_module.h
Nome | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Función | Inicialización do módulo UART | |
Entrada | CH | Canle UART |
pUART_Init | Punteiro da estrutura de configuración básica de UART | |
uRxTimeOutValue | Valor de tempo de espera UART RX FIFO. Cando o RX FIFO reciba novos datos, o contador reiniciarase e reiniciarase. Unha vez que o contador alcance o valor de tempo de espera preestablecido e se habilitou a interrupción de tempo de espera correspondente, xerarase unha interrupción de tempo de espera. | |
Uso | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Execute a configuración básica de UART//Consulte a Figura 12 para a configuración de USART_InitStructure |
Nome | u32 UARTM_WriteByte (u32 CH, u8 uData) | |
Función | Operación de bytes de escritura do módulo UART (TX) | |
Entrada | CH | Canle UART |
uData | Os datos a escribir | |
Saída | ÉXITO | Éxito |
ERRO | Fallou | |
Uso | UARTM_WriteByte(UARTM_CH0, 'A'); //UART escribe 1 byte - 'A' |
Nome | u32 UARTM_Write (u32 CH, u8 *pBuffer, u32 uLength) | |
Función | operación de escritura do módulo UART (TX) | |
Entrada | CH | Canle UART |
pBuffer | Punteiro do buffer | |
uLonxitude | A lonxitude dos datos que se van escribir | |
Saída | ÉXITO | Éxito |
ERRO | Fallou | |
Uso | u8 Test[] = "Isto é unha proba!\r\n"; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART escribe datos de pBuffer |
Nome | u32 UARTM_ReadByte (u32 CH, u8 *pData) | |
Función | Operación de bytes de lectura do módulo UART (RX) | |
Entrada | CH | Canle UART |
pDatos | O enderezo para colocar os datos lidos | |
Saída | ÉXITO | Éxito |
ERRO | Fallou (sen datos) | |
Uso | u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == ÉXITO){UARTM_WriteByte(UARTM_CH0, TempData);}//Se UARTM_ReadByte() devolve ÉXITO, UART escribe este byte de datos |
Nome | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLonxitude) | |
Función | Operación de lectura do módulo UART (RX) | |
Entrada | CH | Canle UART |
pBuffer | Punteiro do buffer | |
uLonxitude | A lonxitude dos datos que se van ler | |
Saída | Conta de lecturas | Leuse a lonxitude dos datos |
Uso | u8 Proba2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() le 5 bytes de datos e almacena datos en Test2 e asigna o reconto de bytes de lectura para Len//Escribir os datos procedentes de Test2 |
Nome | u32 UARTM_GetReadBufferLength (u32 CH) | |
Función | Obter a lonxitude do búfer de lectura (RX) | |
Entrada | CH | Canle UART |
Saída | uLonxitude | Ler a lonxitude do búfer |
Uso | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicialización do módulo UART mentres (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Agarde ata que UARTM_ReadBuffer reciba 5 bytes de datos |
Nome | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Función | Obter a lonxitude do búfer de escritura (TX) | |
Entrada | CH | Canle UART |
Saída | uLonxitude | Escribir a lonxitude do buffer |
Nome | u8 UARTM_IsTxFinished(u32 CH) | |
Función | Obter o estado TX | |
Entrada | CH | Canle UART |
Saída | VERDADEIRO | Estado TX: rematado |
FALSO | Estado TX: non rematado | |
Uso | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSO) #elsewhile (1) #endif //Esta API pódese usar para comprobar o estado do TX, como se mostra arriba; agarda ata que a API UARTM_WriteByte() remate, é dicir, o estado TX é TRUE, e despois continúa coas accións posteriores.//Engádese unha restrición porque non se engadiu esta función ata que o número de versión SVN en uart_module.c sexa 525. |
Nome | baleiro UARTM_DiscardReadBuffer(u32 CH) | |
Función | Descarta os datos do búfer de lectura | |
Entrada | CH | Canle UART |
Uso da API Examples
Esta sección mostrará a escritura e lectura da API exampficheiros do código de aplicación “Module_UART” mediante o proceso de inicialización e o “UART_Module_Example” proceso de código de aplicación. Antes de usar as API, os usuarios deben incluír a cabeceira da API file no código fonte do programa principal file (#include “middleware/uart_module.h”).
Como se mostra na Figura 14, ao entrar no proceso de inicialización, primeiro defina a estrutura de configuración básica do UART. A continuación, configure os membros da estrutura de configuración básica de UART, incluíndo BaudRate, WordLength, StopBits, Parity e Mode. Finalmente, chame á función de inicialización da API, cuxa finalización indica o final do proceso de inicialización. Despois disto, os usuarios poden continuar coas operacións de escritura e lectura en función da configuración básica UART preestablecida.
Figura 14. Diagrama de fluxo de inicialización
O módulo "UART_Module_Example” o código da aplicación demostra as operacións de lectura e escritura da API de forma loopback. O diagrama de fluxo para isto móstrase na Figura 15. As funcións da API utilizadas inclúen UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() e UARTM_GetReadBufferLength(). A súa descrición achégase na sección "Descrición da API".
Figura 15. Diagrama de fluxo de escritura e lectura Examples
Hai outro código de aplicación "UART_Bridge" no cartafol "Module_UART" cuxo relacionado file a descrición introdúcese na sección "Estrutura do directorio". O código da aplicación "UART_Bridge" activa dúas canles UART, UART CH0 e UART CH1, e despois personaliza o protocolo de comunicación entre os dous dispositivos UART mediante estruturas COMMAND, gCMD1 e gCMD2. Estes defínense en uart_bridge.c, como se mostra a continuación. UARTBridge_CMD1TypeDef gCMD1:
Variable Nome | Tipo | Descrición |
uEncabezado | u8 | Cabeceira |
uCmd | u8 | Comando |
uData[3] | u8 | Datos |
UARTBridge_CMD2TypeDef gCMD2:
Variable Nome | Tipo | Descrición |
uEncabezado | u8 | Cabeceira |
uCmdA | u8 | Comando A |
uCmdB | u8 | Comando B |
uData[3] | u8 | Datos |
No código da aplicación "UART_Bridge", use gCMD1 para recibir datos como paquete de comandos e despois analízaos. Despois, segundo o protocolo de comunicación personalizado, configure gCMD2 como paquete de resposta e transmíteo. O seguinte é un example dun paquete de comandos gCMD1) e un paquete de resposta (gCMD2). Paquete de comandos (UARTBridge_CMD1TypeDef gCMD1):
Byte 0 | Byte 1 | Byte 2 ~ Byte 4 |
uEncabezado | uCmd | uData [3] |
"A" | "1" | "x, y, z" |
Paquete de resposta (UARTBridge_CMD2TypeDef gCMD2):
Byte 0 | Byte 1 | Byte 2 | Byte 3 ~ Byte 5 |
uEncabezado | uCmdA | uCmdB | uData [3] |
"B" | "a" | "1" | "x, y, z" |
Ocupación dos recursos
Tomando o HT32F52352 como example, os recursos que ocupa o módulo UART móstranse a continuación.
HT32F52352 | |
Tamaño da ROM | 946 bytes |
Tamaño da RAM | 40*1 + 256*2 Bytes |
Nota:
- As variables globais, incluíndo bandeiras e estado para unha única canle, ocupan 40 bytes de RAM.
- Isto é para unha condición onde se usa unha única canle e o tamaño do búfer TX/RX é de 128/128 bytes. O tamaño do buffer pódese configurar segundo os requisitos da aplicación.
Táboa 4. Código de aplicación Ocupación do recurso
- Entorno de compilación: Actualización 5.36 de MDK-Arm V5.06, ARMCC V7 (build 960)
- Opción de optimización: Nivel 2 (-O2)
Instrucións de uso
Neste capítulo presentarase a preparación ambiental para o código de aplicación “Module_UART”, así como os pasos de compilación e proba.
Preparación Ambiental
O hardware e o software necesarios para o código de aplicación "Module_UART" están listados a continuación.
Táboa 5. Preparación ambiental de hardware/software
Hardware/Software | Conta | Nota |
Kit de inicio | 1 | Esta nota da aplicación usa o kit de inicio HT32F52352 como exemploample |
Cable USB | 1 | Micro USB, conectado a PC |
Código de aplicación | — | Camiño de descarga, file e a configuración do directorio introdúcense na sección "Descarga e preparación de recursos". Ruta: "\\application\Module_UART\UART_Module_Example ” |
Tera Term | — | Consulte a sección "Software do terminal". |
Keil IDE | — | Keil uVision V5.xx |
En primeiro lugar, use o kit de inicio HT32F52352 combinado coa función Virtual COM Port (VCP) de e-Link32 Lite para a introdución da aplicación UART. Para iso é necesario levar a cabo a seguinte preparación ambiental:
- Hai dúas interfaces USB no taboleiro. Use o cable USB para conectar o PC e a interface eLink32 Lite na placa, como se mostra na Figura 16-(a).
- Dado que o código da aplicación necesita usar a función de porto COM virtual (VCP) e-Link32 Lite, asegúrese de que o PAx*2 e DAP_Tx do UART Jumper-J2*1 se cortaron mediante un puente. A localización J2 indícase na Figura 16-(b).
Nota
- J2 no kit de inicio ten dúas opcións, PAx e DAP_Tx en curto ou PAx e RS232_Tx en curto. Consulte o manual de usuario do kit de inicio para as funcións de configuración detalladas.
- A localización do pin MCU UART RX en diferentes kits de inicio é diferente. Este example usa PAx para indicar o pin RX.
Figura 16. Diagrama de bloques do kit de inicio HT32
Agora use a tarxeta de destino do usuario combinada coa función Virtual COM Port (VCP) do e-Link32 Pro para a introdución da aplicación UART. Para iso é necesario levar a cabo a seguinte preparación ambiental:
- Un lado do e-Link32 Pro está conectado a un PC mediante un cable Mini USB e o outro lado está conectado á placa de destino do usuario a través do seu cable gris de 10 bits. A conexión entre as interfaces SWD do cable e a tarxeta de destino implétase mediante liñas de Dupont, como se mostra na Figura 17-(a).
- Os pinos de comunicación en serie do e-Link32 Pro son o Pin#7 VCOM_RXD e o Pin#8-VCOM_TXD. Estes deben estar conectados aos pinos TX e RX da placa de destino do usuario, como se mostra na Figura 17-(b).
Figura 17. Diagrama de bloques da tarxeta de destino do usuario e-Link32 Pro +
Compilación e proba
Esta sección levará a "aplicación\Module_UART\UART_Module_Example” como example para introducir os procesos de compilación e proba. Antes, asegúrese de que se realizaron todos os preparativos descritos no apartado anterior e de que se descargou o software do terminal Tera Term.
Os pasos detallados da operación resúmense a continuación.
Paso 1. Proba de encendido
Configure o ambiente de hardware como se describe na sección anterior. Despois do acendido, iluminarase o LED de encendido D9 na parte inferior esquerda do kit de inicio. O LED USB D1 do e-Link32 Lite na parte superior dereita iluminarase despois de completar a enumeración USB. Se D1 non se ilumina despois dun longo período de tempo, confirme se o cable USB é capaz de comunicarse. Se non, elimínao e insírelo de novo.
Paso 2. Xera un proxecto
Abra a aplicación\Module_UART\UART_Module_Example, faga clic no ficheiro _CreateProject.bat file para xerar un proxecto, como se mostra na Figura 18. Dado que esta nota da aplicación usa o kit de inicio HT32F52352, abra o proxecto IDE de Keil "Project_52352.uvprojx" situado no cartafol MDK_ARMv5.
Figura 18. Executar _CreateProject.bat para xerar o proxecto
Paso 3. Compila e programa
Despois de abrir o proxecto, primeiro faga clic en "Construír" (ou use o atallo "F7"), despois prema en "Descargar" (ou use o atallo "F8"). Despois diso, os resultados de compilación e descarga mostraranse na xanela Saída de compilación. Vexa a figura 19.
Figura 19. Resultados de compilación e descarga
Paso 4. Abra o software Tera Term e configure o porto serie
Abra o software Tera Term e o porto COM. Preste atención a se o número de porto COM xerado polo Starter Kit é correcto ou non. A continuación, faga clic en "Configuración >> Porto serie" para entrar na interface de configuración. A configuración da interface UART do código da aplicación "Module_UART" descríbese na sección "Software terminal". O resultado da configuración móstrase na Figura 20.
Figura 20. Resultado da configuración do porto serie Tera Term
Paso 5. Restablece o sistema e proba
Prema a tecla de reinicio SK – B1 Reset. Despois disto, un "ABCThis is test!" mensaxe será
transmitirase a través da API e mostrarase na xanela Tera Term, como se mostra na Figura 21. Respecto á función de recepción, ao introducir datos na xanela Tera Term, utilizarase a API relevante para determinar a lonxitude do búfer de recepción. Cando os datos recibidos polo PC alcancen os 5 bytes, os 5 bytes de datos recibidos enviaranse secuencialmente. Como se mostra na Figura 22, os datos introducidos secuencialmente son "1, 2, 3, 4, 5", que se reciben e determinan a través da API. Despois disto, os datos "1, 2, 3, 4, 5" imprimiranse despois das cinco entradas.
Figura 21. Proba funcional do código de aplicación “Module_UART” – Transmitir
Figura 22. Proba funcional do código de aplicación “Module_UART” – Recibir
Instrucións de transplante
Esta sección presentará como integrar as API nos proxectos do usuario.
Paso 1. Engade o uart_module.c file no proxecto. Fai clic co botón dereito no cartafol Usuario. Seleccione "Engadir existente Files para Agrupar "Usuario"...", a continuación, seleccione uart_module.c file e prema en "Engadir", como se mostra na Figura 23. Consulte a sección "Estrutura do directorio" file descrición do camiño.
Figura 23. Engadir uart_module.c File para Proxectar
Paso 2. Engade o ring_buffer.c file no proxecto. Fai clic co botón dereito no cartafol Usuario. Seleccione "Engadir existente Files para Agrupar 'Usuario'...”, a continuación, seleccione o ring_buffer.c file e prema en "Engadir", como se mostra na Figura 24.\ Consulte a sección "Estrutura do directorio" file descrición do camiño.
Figura 24. Engadir ring_buffer.c File para Proxectar
Paso 3. Inclúe a cabeceira da API file ao comezo de main.c, como se mostra na Figura 25. (Ext: #include “middleware/uart_module.h”)
Figura 25. Incluír cabeceira da API File a principal.c
Paso 4. Implementa a configuración necesaria para a comunicación UART mediante o ht32_board_config.h file. Isto introdúcese en detalle nas seccións "Descrición da configuración" e "Modificación da configuración e preguntas frecuentes".
Modificación da configuración e preguntas frecuentes
Esta sección presentará como modificar a configuración do UART e explicará algunhas preguntas comúns que se atopan durante o uso.
Cambiar a asignación de pin UART
- Facendo referencia ao capítulo "Asignación de pins" da folla de datos HT32F52352, busque a táboa de asignación de funcións alternativas que enumera as funcións AFIO do tipo de dispositivo. Para os pinos relevantes para UART, consulte a columna "AF6 USART/UART", como se mostra na Figura 26.
Figura 26. Táboa de asignación de funcións alternativas HT32F52352
- Este paso guiará aos usuarios a localizar os pinos UART correspondentes mediante a táboa anterior. O modelo HT32F52352 exampO ficheiro usa USART1 como canle predeterminado. Aquí, os pinos TX e RX son USR1_TX e USR1_RX e están situados en PA4 e PA5 respectivamente. A Figura 27 mostra a correspondencia de pin así como as definicións de pin en "ht32_board_config.h". Os campos baleiros de "Paquete" na táboa de asignación de PIN significan que non hai GPIO relevantes neste paquete. Para modificar os alfinetes UART, busque as localizacións dos alfinetes de destino e volva definir os pinos usando o "ht32_board_config.h" file.
Figura 27. Correspondencia de pin e modificación da configuración
Engade unha canle UART
Tomando o HT32F52352 HTCFG_UARTM_CH1 como example, aquí descríbese como engadir unha nova canle UART.
Modifique o ficheiro ht32_board_config.h file
Facendo referencia ao capítulo "Asignación de pins" da folla de datos HT32F52352, busque a táboa de asignación de funcións alternativas que enumera as funcións AFIO do tipo de dispositivo. Como USART1 utilizouse como HTCFG_UARTM_CH0, o HTCFG_UARTM_CH1 recén engadido pode escoller USART0. Aquí, os pinos TX e RX están situados en PA2 e PA3 respectivamente, como se mostra na metade superior da Figura 28. As modificacións correspondentes impléntanse usando as liñas de código 120~126 en ht32_board_config.h, como se mostra no cadro de puntos vermellos da Figura. 28.
Figura 28. Engadir unha canle UART
Preguntas frecuentes
Q: No paso 5 da sección Compilación e proba, a proba funcional de transmisión é normal. Aquí, o "ABCThis is test!" A mensaxe mostrouse correctamente, pero para a función de recepción, por que non se devolven nin se mostran os cinco valores de entrada?
A: Comprobe se os pinos MCU UART RX e DAP_Tx do UART Jumper-J2 foron curtos mediante un puente. Como o código da aplicación "Module_UART" necesita usar o porto COM virtual (VCP) de e-Link32 Lite, a configuración de curtocircuíto debe aplicarse aos dous pinos esquerdos do UART Jumper-J2, como se mostra na Figura 29.
Figura 29. Configuración UART Jumper-J2
P: Despois ao executar "Build" (ou atallo "F7"), aparece unha mensaxe de erro que indica que a versión da biblioteca de firmware é máis antiga que a necesaria? Vexa a figura 30.
A: A implementación do código da aplicación "Module_UART" debe incluír o uart_module.c/h files que ten un requisito para unha determinada versión da biblioteca de firmware. Cando aparece esa mensaxe de erro, significa que a biblioteca de firmware utilizada actualmente é unha versión máis antiga. Polo tanto, é necesario descargar a versión máis recente a través da ligazón proporcionada na sección "Biblioteca de firmware".
Figura 30. Mensaxe de erro da versión da biblioteca de firmware
Conclusión
Este documento ofrece unha introdución básica para axudar aos usuarios a comprender mellor o código da aplicación "Module_UART" e o protocolo de comunicación UART. Isto foi seguido pola descarga e preparación do recurso. O capítulo Descrición funcional presentou o file estrutura de directorios, a arquitectura da API, a descrición da API e o uso da API, por exemploamples. O capítulo de instrucións de uso demostrou a preparación ambiental, a compilación e a proba do código de aplicación "Module_UART". Tamén proporcionou instrucións para o transplante de código e a configuración de modificación, así como explican algúns problemas comúns que se poden atopar. Todo isto combinado permitirá aos usuarios comprender rapidamente como usar as API e, posteriormente, reducir a cantidade de tempo para comezar.
Material de referencia
Para obter máis información, consulte a Holtek websitio web: www.holtek.com
Versións e información de modificación
Data | Autor | Lanzamento | Información de modificación |
2022.04.30 | 蔡期育(Chi-Yu Tsai) | V1.00 | Primeira Versión |
Exención de responsabilidade
Toda a información, marcas comerciais, logotipos, gráficos, vídeos, clips de audio, ligazóns e outros elementos que aparecen neste web('Información') son só para referencia e están suxeitos a cambios en calquera momento sen previo aviso e a criterio de Holtek Semiconductor Inc. e as súas compañías relacionadas (en diante 'Holtek', 'a empresa', 'nós', ' nós" ou "os nosos"). Mentres que Holtek se esforza por garantir a exactitude da información sobre isto websitio, Holtek non ofrece ningunha garantía expresa ou implícita sobre a exactitude da información. Holtek non asumirá ningunha responsabilidade por calquera incorrección ou fuga.
Holtek non será responsable de ningún dano (incluíndo, entre outros, virus informáticos, problemas do sistema ou perda de datos) que se produza polo uso ou en relación co uso deste websitio por calquera parte. Pode haber ligazóns nesta zona, que che permiten visitar o websitios doutras empresas.
Estes webos sitios non están controlados por Holtek. Holtek non asumirá ningunha responsabilidade e ningunha garantía con respecto á información que se mostre nestes sitios. Hipervínculos a outros websitios son baixo o seu propio risco.
Limitación de responsabilidade
En ningún caso, Holtek Limited será responsable ante ningunha outra parte de calquera perda ou dano ou calquera tipo de dano causado directa ou indirectamente en relación co seu acceso ou uso deste. websitio, o contido nel ou calquera ben, material ou servizo.
Lei vixente
A exención de responsabilidade contida no websitio rexirase e interpretarase de acordo coas leis da República de China. Os usuarios someteranse á xurisdición non exclusiva dos tribunais da República de China.
Actualización de exención de responsabilidade
Holtek resérvase o dereito de actualizar o Aviso de exención de responsabilidade en calquera momento con ou sen aviso previo, todos os cambios entrarán en vigor inmediatamente despois da publicación no websitio.
Documentos/Recursos
![]() |
Nota de aplicación HOLTEK HT32 MCU UART [pdfManual do usuario HT32 MCU, Nota de aplicación UART, HT32 MCU UART, Nota de aplicación, HT32, Nota de aplicación MCU UART, Nota de aplicación HT32 MCU UART |