查看: 9491|回复: 5

LPUART的时钟问题

[复制链接]

3

主题

19

帖子

498

积分

高级工程师

Rank: 3Rank: 3

积分
498
发表于 2021-1-18 16:16:19 | 显示全部楼层 |阅读模式
自己做的板子,没有外部晶振,但是又要做LPUART唤醒休眠,开始是测试LPUART总是不成功,时钟配置的是 InitStructer.ClockSrc  =LL_RCC_LPUART_OPERTION_CLOCK_SOURCE_LSCLK;        
由于没有外部时钟,所以LSCLK的时钟来源为LPOSC,用这个时钟测试收发数据都有问题,后来换了一下时钟配置
InitStructer.ClockSrc  =LL_RCC_LPUART_OPERTION_CLOCK_SOURCE_RCHF;
换了之后LPUART的收发就正常了,以上是在ACTIVE模式下测试的,
但是SLEEP模式下RCHF被关闭了,只能用LPOSC,在不加外部晶振的情况下有办法解决这个问题吗


回复

使用道具 举报

217

主题

393

帖子

3477

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3477
QQ
发表于 2021-1-18 19:14:15 | 显示全部楼层
由于低速时钟LSCLK的时钟源有两个一是LPOSC,二是外部的32K. 其中LPOSC是低速备份时钟在时钟精度上没有外部32K的精度高,常温下收发数据应该是没有问题的,但是高低温下可能会接收异常,所以为保证数据接收,建议外挂32k,时钟源选择为XTLF。您现在常温下接收数据不正常,检查以下您使用的例程是不是最新版的(最新版连接:http://www.fmdevelopers.com.cn/f ... &extra=page%3D1

回复

使用道具 举报

3

主题

19

帖子

498

积分

高级工程师

Rank: 3Rank: 3

积分
498
 楼主| 发表于 2021-1-20 15:26:41 | 显示全部楼层
复旦微技术给出的解决方案是屏蔽掉system_fm33lc0xx.c文件中的一段代码即可使用LPOSC
//    #ifdef USE_LSCLK_CLOCK_SRC_XTLF           
//        GPIOD->FCR |= 0x3C0000;
//        /* XTLF*/
//        RCC->XTLFCR  = (uint32_t)(0x00000000U);
//        /* XTLF*/
//        RCC->XTLFCR  |= (uint32_t)(0x00000005U<<8);
//        for(temp = 2000;temp>0;temp--);
//        /* LSCLKXTLF*/
//        RCC->LSCLKSEL = 0xAA;
//        /* LSCXTLF*/
//        RCC->SYSCLKCR |= 0x8000000U;
//    #else
//        RCC->SYSCLKCR &= 0x7FFFFFFU;
//        RCC->LSCLKSEL = 0x55;
//    #endif
屏蔽掉这段代码即可

还有一种方案是选用LL_RCC_LPUART_OPERTION_CLOCK_SOURCE_RC4M       RCMF时钟也可在低功耗下使用(需先使能)
回复

使用道具 举报

0

主题

4

帖子

274

积分

高级工程师

Rank: 3Rank: 3

积分
274
发表于 2022-6-17 11:10:40 | 显示全部楼层
MR_he 发表于 2021-1-20 15:26
复旦微技术给出的解决方案是屏蔽掉system_fm33lc0xx.c文件中的一段代码即可使用LPOSC
//    #ifdef USE_LSC ...

你好,我也遇到了同样的问题;就是LPUART在sleep模式下,无法唤醒。用您给的第一种屏蔽的方法,还是不能呢~请问可能是什么问题呢? (在非sleep模式下,LPuart正常)
回复

使用道具 举报

154

主题

846

帖子

4624

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4624
发表于 2022-6-20 08:13:59 | 显示全部楼层
Engel 发表于 2022-6-17 11:10
你好,我也遇到了同样的问题;就是LPUART在sleep模式下,无法唤醒。用您给的第一种屏蔽的方法,还是不能 ...

lpuart 休眠唤醒,需要开启 lpuart唤醒中断RXEV_IE。
回复

使用道具 举报

0

主题

4

帖子

274

积分

高级工程师

Rank: 3Rank: 3

积分
274
发表于 2022-6-21 13:05:03 | 显示全部楼层
顾博文 发表于 2022-6-20 08:13
lpuart 休眠唤醒,需要开启 lpuart唤醒中断RXEV_IE。

好的,谢谢。这个RXEV_IE开启之后,还需要在NVIC里面,配置一下串口中断的优先级,不然睡眠后无法由中断唤醒。(绕了好久才调好,分享给大家,共勉)
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表