任务与模块概述
- 采用USB Type-C连接器,支持USB2.0数据传输
- 板卡尺寸:小于35mmx18mm
- 包含信号:UART信号线、+5V、+3.3V、GND
- 器件:需在DigiKey官网上有货且正常售卖
USB转串口的芯片很有很多,一般常用的是沁恒的CH340。但是这是国产芯片在得捷上面不太好购买,所以选择也是比较常见但是价格稍贵的SILICON LABS(芯科)的CP2102N。包其括USB 2.0全速功能控制器,USB收发器,振荡器,通用异步接收/发送器(UART)
现在一般作为调试很是使用到硬件流控,所以只需要关注VCC、GND、TX、RX、RST这些关键的信号
硬件框图
通过CP2102N将Type-C输入的D+/D-转化成TLL的UART,引出了3v3、5V、GND、TX、RX这些信号
打板历程
本次打板总共打了三次,如下:
第一版的时候,接上USB电脑的设备管理器没有反应就感觉不太对应了,那时候不知道是焊接的问题还是硬件设计的问题,所以就不断的重新补焊接上电脑看看现象,后来用万用表测量CP2102输出的3V3发现并没有电压,感觉是硬件设计的问题了。通过仔细对比发现了两个问题,1:可能是芯片焊接错了(CP2102C和CP2102N不是同一个东西)。2:电源电压(看手册似乎可以是5V供电,但是看了好多优秀示例都是通过两个电阻分压)。3:那几个复位、时钟、SUSPEND这些引脚导致的?
第二版,用立创EDA绘制的验证版,是来验证测试是哪一个问问题,所以将全部的IO也方便跳线。一开始接入到电脑上不识别,但是会输出3V3了,那说明芯片应该是正常工作了,但是没有识别到而已,然后发现D+/D-两个引脚虚焊了,补上焊锡就可以识别到了,但是在测试收发的时候可以发送但是无法收到这就奇怪了难道需要配置什么吗,找了一圈最后发现居然还是虚焊了……
第三版,在确定没有硬件问题了,重新使用KICAD来完成活动任务的,因为需要实物小于35mmx18mm,第二版为了调试方便将所有的引脚引出来了,在尺寸要求上肯定是不满足了,所以根据验证的方案重新设计了一版本,在测试的时候没有连接上,第一时间就知道是自己焊接的问题了(苦笑),好在经过修修补补还是可以正常使用的。
相较于第一版,在电源地方添加了电阻分压,在3V3和VCC多添加了一个滤波电容
调试软件和功能展示图
使用第一阶段绘制的MCU核心板作为测试,连接图如下
软件部分测试就比较简单了,进行串口数据收发回环,主要得先配置好MCC,然后测试代码如下:
void UART_RX_IRQ(void)
{
UART1.Write(UART1.Read());
}
int main(void)
{
SYSTEM_Initialize();
UART_Screen.RxCompleteCallbackRegister(UART_RX_IRQ);
INTERRUPT_GlobalInterruptEnable();
INTERRUPT_PeripheralInterruptLowEnable();
while(1)
{
}
}
功能测试图:可以看到收发的字节数都是一样的
心得体会
这次活动遇到的坑不小,一个明明感觉挺简单的工具但是实际做起来的时候感觉中间的麻烦不断,还有一个就是焊接还是有一定难度的,特别是16脚的Type-C和QFN封装的芯片,还是需要加强加强