打印
[STM32L4]

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

[复制链接]
896|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;



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


问题:
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 | 只看该作者
编译优化级别调到最低试试

使用特权

评论回复
评论
xiaofei558008 2023-5-8 10:00 回复TA
none没开优化,和优化没关系,感觉像是ADC寄存器写进去了,但没有生效; 
5
香水城| | 2023-5-8 13:40 | 只看该作者
本帖最后由 香水城 于 2023-5-8 17:26 编辑

原因是 你使能ADC模块后,应该稍微等会儿,让子弹飞一会儿。。。或者你检查下ADC ready位更好。

使用特权

评论回复
6
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);

我调整一下试试;

使用特权

评论回复
7
hanwe| | 2023-5-10 18:28 | 只看该作者
稍微等会儿

使用特权

评论回复
8
帛灿灿| | 2024-4-1 07:04 | 只看该作者

利用协议、加密算法或这些算法中的安全漏洞来进行攻击

使用特权

评论回复
9
周半梅| | 2024-4-1 10:03 | 只看该作者

具存储功能的存储器芯片也能加密

使用特权

评论回复
10
Pulitzer| | 2024-4-1 11:06 | 只看该作者

紫外光复位保护电路是不行的

使用特权

评论回复
11
童雨竹| | 2024-4-1 13:02 | 只看该作者

大部分能够读取或者识别Flash上的数据就能够获得Firmware文件

使用特权

评论回复
12
Wordsworth| | 2024-4-1 14:05 | 只看该作者

微探针技术都属于侵入型攻击

使用特权

评论回复
13
Clyde011| | 2024-4-1 15:08 | 只看该作者

大部分单片机都带有加密锁定位或者加密字节

使用特权

评论回复
14
公羊子丹| | 2024-4-1 16:01 | 只看该作者

如果在编程时加密锁定位被使能/锁定,就无法用普通编程器直接读取单片机内的程序

使用特权

评论回复
15
万图| | 2024-4-1 17:04 | 只看该作者

编程器定位插字节

使用特权

评论回复
16
Uriah| | 2024-4-1 18:07 | 只看该作者

单片机一般都有内部程序区和数据区

使用特权

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

本版积分规则

137

主题

971

帖子

13

粉丝