你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 931|回复: 0

[STM32L496] 【NUCLEO-L496ZG评测】+新建工程寄存器版

[复制链接]

8

主题

164

回帖

97

蝴蝶豆

金牌会员

最后登录
2020-12-2
发表于 2017-4-8 16:19:43 | 显示全部楼层 |阅读模式
新建工程+串口程序

图片1.png
PG7->LPUART1_TX
PG8->LPUART1_RX
值得一提的是 这里使用的低功耗串口  (是否低功耗我不知道,但这却是噩梦的开始,既然选择了用寄存器编程就要一直走下去...
一开始认为 LPUART和普通的串口差不多,然后就用按照“正常”的方法配置了 LPUART  时钟使能-> 复用设置->  IO设置-> LPUART设置
  1. <font face="simsun">// UART.c</font>
复制代码

然后在main里面随便发送点东西
  1. //main.c
  2. LPUART1_Init(40,115200);
  3. LPUART_Printf("HELLO WORLD!\n");
复制代码

结果什么都没发过来。
QQ图片20170408140347.png
然后我就用 逻辑分析仪测了一下这两个引脚(PG7&8) 没有电平的变化

然后我就弄了一个电平翻转的程序测试了一下 结果 电平还是没有变化
QQ截图20170408141744.jpg
然后调试看了一下寄存器 很神奇我把整个PG的IO都置高 但是IDR只有后2位(PG0&1)为高;
所以可以排除 时钟的原因;
QQ截图20170408143027.jpg
经过多方调查发现 PWR->CR2 的第9位控制 PG[15..2]的供电
PG[15:2]使用的是外部电源VDDIO2
解决了 IO的问题之后发现 串口发送出来的数据是乱码
乱码基本上跟时序有关 然后看了一下参考手册 Low-Power UART的这个BRR寄存器和UART的有些区别
QQ截图20170408150235.jpg
上面规定了 一个范围
Fck 时钟必须在[3*Bps,.4096*Bps]之间
QQ截图20170408150008.jpg
然后在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)
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版