【Microchip WBZ451 Curiosity】-5- 增加硬件UART
[复制链接]
本帖最后由 慕容雪花 于 2023-8-20 14:14 编辑
UART是一种非常常用的通用异步收发协议,自己在找资料的过程中,发现了Microchip强大的文档,链接如下。
Universal Asynchronous Receiver Transmitter (UART) module https://onlinedocs.microchip.com/pr/GUID-167CA20A-2C0F-4CBC-A693-9FD032B9B193-en-US-1/index.html?GUID-C8B83E54-0F62-4205-98DD-B1560AACDBB4
一、硬件原理
WBZ451好奇开发板使用了一颗Microchip公司的MCP2200来把上位机的USB报文转成UART报文,这样就实现了电脑与开发板的通讯。这颗芯片支持的UART波特率在300~1000 kbps.
电路原理图如下。
其中,MCPD_N与MCPD_P为USB-和USB+信号;RTS, RX, TX,CTS是UART信号;GP0-GP7是MCP2200自带的8个GPIO,可以用来做个指示等用途。注意上图中MCP2200芯片的TX-RX, RX-TX,这种cross-couple的连接方法。因为上位机发送到USB -> TX引脚7,WBZ451这边需要用一个RX引脚来连接。
MCP2200转换好的UART信号,再经过4颗74LVC1T45芯片来控制信号方向:
实际电路图:
上图中VCP-UART连接到就是开发板核心模块WBZ451PE模组的如下UART相关引脚。这些引脚需要知MCC图形化配置工具中进行配置。
二、代码编写
首先还是先启动MCC配置工具,点击finish后,耐心等待。
进入MCC后,在左侧设备资源树中,找到Peripheral->SERCOM-> SERCOM0,点击+号,添加该外设到项目中。
之后再添加一个:Console System Service
生成代码:
现在遇到的问题是烧录后串口助手打印是空的,还在寻找问题原因。
2023-08-20:问题解决!
原因:默认串口0的工作模式是PPS,这个需要知Pin Configuration里面把UART的收发引脚配置一下,我之前的工作忽略了这一部分。其实更简单的方式是选择Direct Mode。
还发现一个小技巧:就是使用strlen来自动计算UART传输字符的个数。
SERCOM0_USART_Write((uint8_t *)"Inside APP_Tasks: GAP INIT", strlen("Inside APP_Tasks: GAP INIT"));
在代码中,添加一个串口打印:
void APP_Tasks ( void )
{
APP_Msg_T appMsg[1];
APP_Msg_T *p_appMsg;
p_appMsg=appMsg;
/* Check the application's current state. */
switch ( appData.state )
{
/* Application's initial state. */
case APP_STATE_INIT:
{
bool appInitialized = true;
//appData.appQueue = xQueueCreate( 10, sizeof(APP_Msg_T) );
APP_BleStackInit();
// Start Advertisement
//https://onlinedocs.microchip.com/pr/GUID-C5EAF60E-9124-427C-A0F1-F2DBE662EA92-en-US-1.2.1/index.html?GUID-C4D5F735-FEC4-4FA5-A778-C997D5A536AE
//Parameter Description
//[in] enable Advertising control option.
//[in] duration Duration for advertising. (Unit: 10 ms) Set to 0 to continuously advertise
BLE_GAP_SetAdvEnable(0x01, 0x00);
//printf("\r\n BLE GAP ENabale. Begin to advertise!");
SERCOM0_USART_Write((uint8_t *)"Inside APP_Tasks: GAP INIT", strlen("Inside APP_Tasks: GAP INIT"));
之后编译,下载:
又找回了之前的Microchip的烧录工具:
还有一个步骤:拔掉USB,然后重新插上。打开串口工具TeraTerm:
至此,串口UART打印功能ok。
参考资料:
1. MCP2200 Datasheet: https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP2200-USB-2.0-to-UART-Protocol-Converter-with-GPIO-DS20002228E.pdf
2. 74LVC1T45 Datasheet: https://www.diodes.com/assets/Datasheets/74LVC1T45.pdf
|