[3]SWM181-使用串口

尝试使用串口通讯进行通讯,我在原理图上面怎么找都找不到串口引脚。
翻查数据手册,发现并没有特定的串口引脚,芯片内部有一个神奇的数字信号引脚分配器——>PORTCON。
对于部分数字输入输出功能,可以配置到任意 I/O 引脚,以方便板级布局。包括如下功能:
 UARTn_TX           UARTn_RX
 I2Cn_SDA           I2Cn_CLK
 PWMx_OUT         PWM_BREAK
 COUNTERn_IN     CAPTURE_IN
 CAN_RX              CAN_TX
怎么用呢?我们看看下面这个图应该就明白了。
FluxBB bbcode 测试
意思是可用把上面列出来的数字类型引脚分配到任意的带FUNCTION功能的引脚上面。
那我们看看那些引脚是带有FUNCTION的呢?上图:

看起来,除了电源引脚、晶振引脚、复位引脚,其余的引脚都支持配置为FUNCTION功能。
怎么配置呢?我们尽量不要关注寄存器层,直接使用官方的例程上面的库接口:
    PORT_Init(PORTA, PIN0, FUNMUX_UART0_RXD, 1);    //GPIOA.0配置为UART0输入引脚
    PORT_Init(PORTA, PIN1, FUNMUX_UART0_TXD, 0);    //GPIOA.1配置为UART0输出引脚
来到这里,终于明白为什么开发板上面CH340G的两根串口线不直连MCU了。
初始化串口,使用官方的代码,略微修改波特率为115200。

void SerialInit(void)
{
	UART_InitStructure UART_initStruct;
	
	PORT_Init(PORTA, PIN0, FUNMUX_UART0_RXD, 1);	//GPIOA.0配置为UART0输入引脚
	PORT_Init(PORTA, PIN1, FUNMUX_UART0_TXD, 0);	//GPIOA.1配置为UART0输出引脚
 	
 	UART_initStruct.Baudrate = 115200;
	UART_initStruct.DataBits = UART_DATA_8BIT;
	UART_initStruct.Parity = UART_PARITY_NONE;
	UART_initStruct.StopBits = UART_STOP_1BIT;
	UART_initStruct.RXThreshold = 3;
	UART_initStruct.RXThresholdIEn = 0;
	UART_initStruct.TXThreshold = 3;
	UART_initStruct.TXThresholdIEn = 0;
	UART_initStruct.TimeoutTime = 10;
	UART_initStruct.TimeoutIEn = 0;
 	UART_Init(UART0, &UART_initStruct);
	UART_Open(UART0);
}

  重定位编译器C库的标准输出:

int fputc(int ch, FILE *f)
{
	UART_WriteByte(UART0, ch);
	
	while(UART_IsTXBusy(UART0));
 	
	return ch;
}

这样就能够愉快的使用printf(...)函数进行格式化打印数据了。
-----------------------------------------------------------------------------------------
直接把MCU串口引脚连接到CH340G的串口引脚上,不知道会不会烧掉
PA0(RX)-->TX
PA1(TX)-->RX

-----------------------------------------------------------------------------------------

刚刚想用keil直接下载程序,便按官方教程,修改Jflash中的相关文件,但是keil还是无法下载,还是要使用官方的Jlink下载软件。
写好串口的程序,下载进去。
芯片没有任何反应。下载之前的点灯程序,按下按键,依然没有任何反应。
芯片似乎挂掉了,可能是由以下原因导致,
①按照官方的教程中修改Jlink的Device.xml文件(重装Jlink,没有解决问题,排除!)
②CH340G IO无法直连MCU IO导致芯片不正常,
③使用了下载软件的校验功能,虽然没有成功过,可能影响了内部的数据
④使用keil下载,虽然下载失败,可能影响了内部的数据
反正现在情况就是显示下载成功,但是没有出现想要的实验现象,具体原因未知。

FluxBB bbcode 测试
使用下载软件的校验功能,校验结果说不一致,到底是什么原因呢?
FluxBB bbcode 测试

=======================================================================

解决方案:

下载https://whycan.cn/files/members/1390/Synwit_JFLASH-190304.rar的内容,解压后,复制到./Keil/ARM/Flash中,然后直接使用Keil下载程序,下载之前的点灯程序,成功点灯。目录如下:
FluxBB bbcode 测试

-----------------------------------------------------------------------------------------

程序下载进去之后,串口调试助手上面没有任何数据,将2根线反过来,可用看到数据,说明上面这个接法是错的,应该修正为:
PA0(RX)-->RX
PA1(TX)-->TX
(此接法对应开发板上面的丝印,并非是芯片引脚的标识)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值