技术专栏
MKE14F512VLL16单片机用不同的端口使用相同的 LPUART 模块
1.前言
2.硬件说明
3.代码编写
4.解决方案
1.前言
最近使用NXP Kinetis的
单片机MKE14F512VLL16开发项目
使用的IDE
- MCUXpresso v11.3.0
使用的SDK软件开发包
- SDK_2.x_MKE14F512XXX16 ,v2.8.8
有一个应用程序,
必须在两个不同的端口中
使用相同的 LPUART 模块
不同的外围设备连接到每个端口
我不想同时使用它们
2.硬件说明
外设 1(P1) 连接到:
PTA3 (ALT6)- LPUART0-TX
PTA2 (ALT6)- LPUART0-RX
外设 2(P2) 连接到:
PTB0 (ALT2)- LPUART0-RX
PTB1 (ALT2)- LPUART0-TX
3.代码编写
在我的应用程序中
先使用以下代码
使用端口 A2 和 A3 初始化 LPUART0 模块
void InitLPUART0(void){
PCC->CLKCFG[PCC_LPUART0_INDEX] |= PCC_CLKCFG_PCS(3); //System Oscillator Bus Clock
PCC->CLKCFG[PCC_LPUART0_INDEX] |= PCC_CLKCFG_CGC(1); //PCC Configuration - Enable Clock
PORTA->PCR[2] |= PORT_PCR_MUX(6); /* LPUART - ALT6 */
PORTA->PCR[3] |= PORT_PCR_MUX(6);
LPUART0->CTRL &= ~(LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK);
LPUART0->BAUD = BAUD_115200; //48M/(26*16)Baud rate for 115200bps
LPUART0->CTRL |= LPUART_CTRL_RIE(1); /* Receiver Interrupt Enable */
LPUART0->CTRL |= LPUART_CTRL_TE(1); /* Transmitter enable */
LPUART0->CTRL |= LPUART_CTRL_RE(1); /* Receiver Enable
*/
NVIC_EnableIRQ(LPUART0_RX_IRQn); }
最初,这是按预期工作的。
系统正在通过端口按预期发送数据。
当我需要使用其他外设时,
我将 LPUART0 转移到另一个端口,
如下所示进行初始化。
LPUART0->CTRL &= ~(LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK); /* Disable Tranceiver */
PORTA->PCR[3] |= PORT_PCR_MUX(1); /* LPUART - ALT1 - GPIO */
PORTA->PCR[2] |= PORT_PCR_MUX(1);
PORTB->PCR[0] |= PORT_PCR_MUX(2); /* LPUART - ALT2 - UART */
PORTB->PCR[1] |= PORT_PCR_MUX(2);
LPUART0->CTRL |= (LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK); /* Enable Tranceiver */
安装配置后,
MCU系统应该通过端口 B 将数据发送到外设 2
发现即使传输代码正在运行,
LPUART 线路也是空闲的
切换端口后
如果我使用相同的方法切换回端口 A 中的外设 1,
它也不会响应。
如果使用其中一个端口而不切换到另一个,
则系统正在工作
4.解决方案
修改PORTx_PCR寄存器中的MUX设置
相对应的第 8、9 和 10 位
而不是清除它们
更正的方法贴在下面
void SelectCOMPort(COMPORT_TYPE CPort){ /* Directs LPUART0 to the required port and disables others */
LPUART0->CTRL &= ~(LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK); /* Disable Tranceiver */
switch (CPort)
{
case PORT_1:
PORTB->PCR[0] &= ~(BIT8 | BIT9 | BIT10); /* LPUART - Disable */
PORTB->PCR[1] &= ~(BIT8 | BIT9 | BIT10);
PORTA->PCR[3] |= PORT_PCR_MUX(6); /* LPUART - ALT6 - to UART */
PORTA->PCR[2] |= PORT_PCR_MUX(6);
break;
case PORT_2:
PORTA->PCR[3] &= ~(BIT8 | BIT9 | BIT10); /* LPUART - Disable */
PORTA->PCR[2] &= ~(BIT8 | BIT9 | BIT10);
PORTB->PCR[0] |= PORT_PCR_MUX(2); /* LPUART - ALT2 - to UART */
PORTB->PCR[1] |= PORT_PCR_MUX(2);
break;
default:
break;
}
LPUART0->CTRL |= (LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK);
}
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
93
收藏
评论
打赏
- 分享
- 举报
评论
1个
手气红包
相关专栏
-
浏览量:2664次2020-10-09 17:30:40
-
浏览量:2604次2022-11-10 10:02:57
-
浏览量:1956次2020-03-19 17:38:49
-
浏览量:936次2023-02-09 09:35:45
-
2020-10-15 10:49:40
-
2020-08-11 11:58:23
-
浏览量:880次2023-03-23 18:35:11
-
浏览量:3762次2020-11-09 15:54:12
-
浏览量:3254次2020-12-04 09:34:16
-
浏览量:1490次2019-11-18 09:17:30
-
2020-07-11 17:58:22
-
浏览量:1849次2020-08-03 11:18:53
-
浏览量:1286次2019-05-16 16:41:47
-
浏览量:2292次2020-08-17 18:01:42
-
浏览量:1755次2022-10-20 09:29:49
-
浏览量:4206次2021-09-27 17:21:10
-
浏览量:2053次2020-08-20 18:02:29
-
浏览量:4923次2021-08-06 10:08:01
-
浏览量:4800次2020-08-11 18:51:18
切换马甲
上一页
下一页
打赏用户
共 1 位
我要创作
分享技术经验,可获取创作收益
分类专栏
-
178篇
热门专栏
- DS90UB964-Q1 图像采集调试
- nvidia xavier平台lan7800网卡驱动调试记录(1)驱动&硬件搭建
- 开发板通过nfs服务挂载虚拟机文件目录的嵌入式开发方式
- YUV420SP图像char*与OpenCV的Mat格式的相互转换
- Jetson Xavier NX 安装 Deepstream6.3
- Linux设备树详解(四) 内核解析DTB成platfrom_device
- 2024慕尼黑AIoT创新应用论坛——工业物联网商业模式分析及案例分享
- GPMC并口多通道AD采集案例,基于TI AM62x四核处理器平台!
- stm32在linux下开发环境搭建
- 嵌入式Linux MIPI接口LCD调试-关于DRM显示与应用调试的干货浓缩
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注
感谢大佬分享感谢大佬分享