你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
ST意法半导体中文论坛
»
论坛
›
【技术区】
›
ST开发工具
›
【NUCLEO-L496ZG评测】+新建工程寄存器版
返回列表
查看:
874
|
回复:
0
[STM32L496]
【NUCLEO-L496ZG评测】+新建工程寄存器版
[复制链接]
Cortexxx
Cortexxx
当前离线
在线时间
164 小时
UID
3241441
ST金币
0
蝴蝶豆
97
注册时间
2016-1-28
8
主题
164
回帖
97
蝴蝶豆
金牌会员
金牌会员, 积分 2320, 距离下一级还需 2680 积分
最后登录
2020-12-2
收听TA
发消息
发表于 2017-4-8 16:19:43
|
显示全部楼层
|
阅读模式
a0a.1 32b0c
新建工程+串口程序
PG7->LPUART1_TX
PG8->LPUART1_RX
值得一提的是 这里使用的低功耗串口 (是否低功耗我不知道,但这却是噩梦的开始,既然选择了用寄存器编程就要一直走下去...
一开始认为 LPUART和普通的串口差不多,然后就用按照“正常”的方法配置了 LPUART 时钟使能-> 复用设置-> IO设置-> LPUART设置
<font face="simsun">// UART.c</font>
复制代码
然后在main里面随便发送点东西
。
//main.c
LPUART1_Init(40,115200);
LPUART_Printf("HELLO WORLD!\n");
复制代码
结果什么都没发过来。
然后我就用 逻辑分析仪测了一下这两个引脚(PG7&8) 没有电平的变化
然后我就弄了一个电平翻转的程序测试了一下 结果 电平还是没有变化
然后调试看了一下寄存器 很神奇我把整个PG的IO都置高 但是IDR只有后2位(PG0&1)为高;
所以可以排除 时钟的原因;
经过多方调查发现 PWR->CR2 的第9位控制 PG[15..2]的供电
PG[15:2]使用的是外部电源VDDIO2
解决了 IO的问题之后发现 串口发送出来的数据是乱码
乱码基本上跟时序有关 然后看了一下参考手册 Low-Power UART的这个BRR寄存器和UART的有些区别
上面规定了 一个范围
Fck 时钟必须在[3*Bps,.4096*Bps]之间
然后在HAL里面看到这一段说明
发现LPUART算BRR的方法和UART的不一样
不仅仅是Fck/Bot这么简单 BBR=Fck/((Bot&0xfffffff0)>>4))<<4;
这样一个串口的配置就基本完成了
然后弄了一个回环测试
在测试的时候发现了一个问题 把波特率设置为9600的时候出乱码
原因就是上面说过的
Fck 时钟必须在[3*Bps,.4096*Bps]之间
Fck时钟为40M超过了其最大值 4096*9600=39M 所以才出的乱码
其实参考手册上也说了这一段话 只有用32.768 kHz clock LSE 时钟才能把波特率调到9600
PS 可能有些问题说的不对 见谅
LPUART.zip
(232.52 KB, 下载次数: 4)
2017-4-8 16:19 上传
点击文件名下载附件
STM32L496
回复
使用道具
举报
返回列表
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表