[STM32L4] ADC JSQR 为啥第一次配置了不能生效

[复制链接]
2047|16
 楼主| xiaofei558008 发表于 2023-5-4 17:48 | 显示全部楼层 |阅读模式
AD, ADC, dc

芯片是 STM32L432
用 ADC1的Channel17 采集内部温度传感器数据;
用 ADC1的Channel0 采集内部VREF,反向来计算VDDA;
大部分代码cubemx 生成了;

但JSQR应该是cube 有bug,不能自动生成(通道全是0);
直接手写JSRQ:
  ADC1->CR |= ADC_CR_JADSTP;
  ADC1->CR |= ADC_CR_ADEN;
  ADC1->JSQR = 0x00001179;

  while(LL_ADC_IsActiveFlag_ADRDY(ADC1) == 0);
  LL_ADC_INJ_StartConversion(ADC1);


神奇的事情是:
VREF的值算出来ok;

1469564537db2ace09.png

这时候算出来的 Temperature sensor 的ADC 值是错误的,其实应该是其他通道;
如果我手工在IAR 里面写一下JSQR 的值位0x0x00001179,这时候转化就正确了,MCU温度获取也正常了;
6927064537e7ce5e84.png

问题:
1)、IAR下,仿真 RESET ADC1 的配置值还在,不能跟着芯片复位,一起复位(IAR已经设置硬件RESET脚复位);
只能在程序开头手工加复位:
/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  __disable_irq();

  //reset adc.
  RCC->AHB2RSTR |= RCC_AHB2RSTR_ADCRST;
  RCC->AHB2RSTR &= ~RCC_AHB2RSTR_ADCRST;


2)、JSQR明明写进去了,为啥第一次不能生效,17通道转化错误?
3)、ADC 校准calibration功能很容易卡死,导致什么也不能写入,具体操作步骤我忘了,反正不好校准,要么卡死,要么校准位永远不能清零;

求大神解答;










 楼主| xiaofei558008 发表于 2023-5-4 18:02 | 显示全部楼层
  ADC1->CR |= ADC_CR_JADSTP;
  ADC1->CR |= ADC_CR_ADEN;
  ADC1->JSQR = 0x00001179;
  ADC1->JSQR = 0x00001179;  //增加一次可以
 楼主| xiaofei558008 发表于 2023-5-4 18:02 | 显示全部楼层
  ADC1->CR |= ADC_CR_JADSTP;
  ADC1->CR |= ADC_CR_ADEN;
  ADC1->JSQR = 0x00001179;
  ADC1->JSQR = 0x00001179;  //增加一次可以
地瓜patch 发表于 2023-5-4 19:20 来自手机 | 显示全部楼层
编译优化级别调到最低试试

评论

none没开优化,和优化没关系,感觉像是ADC寄存器写进去了,但没有生效;  发表于 2023-5-8 10:00
香水城 发表于 2023-5-8 13:40 | 显示全部楼层
本帖最后由 香水城 于 2023-5-8 17:26 编辑

原因是 你使能ADC模块后,应该稍微等会儿,让子弹飞一会儿。。。或者你检查下ADC ready位更好。 1744064588b00c9b29.png
 楼主| xiaofei558008 发表于 2023-5-10 12:25 | 显示全部楼层
香水城 发表于 2023-5-8 13:40
原因是 你使能ADC模块后,应该稍微等会儿,让子弹飞一会儿。。。或者你检查下ADC ready位更好。 ...

谢谢;
ADC1->CR |= ADC_CR_JADSTP;
  ADC1->CR |= ADC_CR_ADEN;


  while(LL_ADC_IsActiveFlag_ADRDY(ADC1) == 0);  
ADC1->JSQR = 0x00001179;
  LL_ADC_INJ_StartConversion(ADC1);

我调整一下试试;
hanwe 发表于 2023-5-10 18:28 | 显示全部楼层
稍微等会儿
帛灿灿 发表于 2024-4-1 07:04 | 显示全部楼层

利用协议、加密算法或这些算法中的安全漏洞来进行攻击
周半梅 发表于 2024-4-1 10:03 | 显示全部楼层

具存储功能的存储器芯片也能加密
Pulitzer 发表于 2024-4-1 11:06 | 显示全部楼层

紫外光复位保护电路是不行的
童雨竹 发表于 2024-4-1 13:02 | 显示全部楼层

大部分能够读取或者识别Flash上的数据就能够获得Firmware文件
Wordsworth 发表于 2024-4-1 14:05 | 显示全部楼层

微探针技术都属于侵入型攻击
Clyde011 发表于 2024-4-1 15:08 | 显示全部楼层

大部分单片机都带有加密锁定位或者加密字节
公羊子丹 发表于 2024-4-1 16:01 | 显示全部楼层

如果在编程时加密锁定位被使能/锁定,就无法用普通编程器直接读取单片机内的程序
万图 发表于 2024-4-1 17:04 | 显示全部楼层

编程器定位插字节
Uriah 发表于 2024-4-1 18:07 | 显示全部楼层

单片机一般都有内部程序区和数据区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

998

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部