打印
[STM32F0]

怎样获取VREFINT_CAL?

[复制链接]
5224|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
treesss|  楼主 | 2014-12-18 21:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
vr, ADC, dc, IO, ui
STM32F030的,ADC模块的内部参考电压VREFINT,datasheet说出厂时把校准值写入了VREFINT_CAL,地址是0x1FFF F7BA - 0x1FFF F7BB,见F030的datasheet 17页。
可是在程序中用
Data2 = *(__IO uint32_t *)(0X1FFFF7BB);或者
Data1 = *(__IO uint32_t *)(0X1FFFF7BA);
都是跳到了硬件错误中断HardFault_Handler中,这是问什么?


还有类似的,ADC有个内部温度通道,也有个校准值,说是出厂时存到了0x1FFF F7B8 - 0x1FFF F7B9    0x1FFF F7C2 - 0x1FFF F7C3,我试了一下只有0x1FFF F7B8这个地址能读取,其他的一读就跳到了硬件错误中断,这是为啥?





QQ截图20141218211510.jpg (104.89 KB )

QQ截图20141218211510.jpg
沙发
airwill| | 2014-12-19 18:20 | 只看该作者
呵呵, 你应该这样处理
Data1 = *(__IO uint16_t *)(0X1FFFF7BA);
或者
Data2 = *(__IO uint8_t *)(0X1FFFF7BB);
Data1 = *(__IO uint8_t *)(0X1FFFF7BA);
原因是:
Cortex-M0 不象 M3, 已经不支持非对齐的数据访问了(否则就是硬 FAULT)

使用特权

评论回复
板凳
treesss|  楼主 | 2014-12-24 14:22 | 只看该作者
airwill 发表于 2014-12-19 18:20
呵呵, 你应该这样处理
Data1 = *(__IO uint16_t *)(0X1FFFF7BA);
或者

果然是版主牛啊!后来我问ST的技术支持的,才知道,确实就是这个原因

使用特权

评论回复
地板
zhao16881159| | 2018-5-18 13:57 | 只看该作者
请问STM32F103  VREFINT_CAL存在哪个地址上啊?

使用特权

评论回复
5
yiyigirl2014| | 2018-5-18 20:36 | 只看该作者
看看例子,应该有的。

使用特权

评论回复
6
stevenyinjs| | 2022-2-12 14:04 | 只看该作者
请问一下版主,或者其它大能,现在用HK32F030MF4P6 写个采集电压的小练习,由于自己菜鸟 很多地方不清楚,想问一下:
1. 在HK32F030M的用户手册中 96页  VDDA=3.3 * VREFINT_CAL / VREFINT_S,请问为什么不是 VDDA=3.3 * VREFINT_s / VREFINT_cal ?不理解
2. 在用户手册97页 VCHANNELx=(3V×VREFINT_CAL×ADC_DATAx)/(VREFINT_DATA ×FULL_SCALE),请问这儿又变成3V 按照第一不是应该3.3吗?
3.在HK32F030M的datasheet 中没有找到 VREFINT_CAL 用户手册数据手册也都没有?但是用户手册又有公式,请问HK32F030M的VREFINT_CAL在哪儿?可用吗?
4. 再问个菜鸟问题,采样电压最高18V 最低8V 可以用两个电阻一个9K 一个1K 的串联成分压电路,一K电阻接地,9K电阻接外部电压,在两电阻之间,用线直接连到HK32F030M的ADC1采样端口,可以吗

使用特权

评论回复
7
内政奇才| | 2022-2-14 11:15 | 只看该作者
看看相关例程把

使用特权

评论回复
8
内政奇才| | 2022-2-14 11:15 | 只看该作者
看看相关例程把

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝