781|3

136

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

【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

此帖出自无线连接论坛

最新回复

烧录我用的pde工具,这个IDE确实不咋行   详情 回复 发表于 2023-8-27 15:12
点赞 关注
 

回复
举报

136

帖子

2

TA的资源

一粒金砂(高级)

沙发
 

不得不吐槽一下mplabx ide的烧录,时好时坏,早上还有问题,过了2h,又好了。。。。。。。

此帖出自无线连接论坛

点评

烧录我用的pde工具,这个IDE确实不咋行  详情 回复 发表于 2023-8-27 15:12
 
 

回复

83

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
慕容雪花 发表于 2023-8-20 15:27 不得不吐槽一下mplabx ide的烧录,时好时坏,早上还有问题,过了2h,又好了。。。。。。。

烧录我用的pde工具,这个IDE确实不咋行

此帖出自无线连接论坛

点评

好像是基于netbean...............一言难尽啊  详情 回复 发表于 2023-8-28 09:03
 
 
 

回复

136

帖子

2

TA的资源

一粒金砂(高级)

4
 
swzswz 发表于 2023-8-27 15:12 烧录我用的pde工具,这个IDE确实不咋行

好像是基于netbean...............一言难尽啊

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表