打印
[技术问答]

测试了200个HK32F030M就有一个不正常

[复制链接]
4018|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pi, IO, gp, GPIO, LED
第一次用这个IC,小批量试产一批,测试200个产品,有一个不正常。
分析半天,发现时钟只有正常的2/3速度,用的是HSI 32Mhz。烧录了一个翻转IO的简单程序确认过,实测约20Mhz。
怀疑是出厂HSI校正出错,或是校正数据掉了。
下附测试程序,MDK仿真时读出的OPTION区、出厂设置区数据:

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "hk32f030m.h"
#include "hk32f030m_gpio.h"

static void ledGpioInit(void);
static void ledGpioToggle(void);
static void softWareDelay(void);

#define LED_PIN                GPIO_Pin_1
#define LED_PORT        GPIOA

void delayus(uint32_t i)
{
  i*=5;//1US
  while(i--);
}

void delayms(uint32_t i)
{
  delayus(740*i);                        //740
}

int main(void)
  /* Infinite loop */
{
        ledGpioInit();
  while (1)
  {
                delayms(100);
                ledGpioToggle();
//                delayms(150);
//                ledGpioToggle();
//                delayms(150);
//p                ledGpioToggle();
//                delayms(1000);
//                ledGpioToggle();
////                softWareDelay();
  }
}
static void ledGpioInit(void)
{
        GPIO_InitTypeDef m_gpio;
       
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
       
        m_gpio.GPIO_Mode = GPIO_Mode_OUT;
        m_gpio.GPIO_OType = GPIO_OType_PP;
        m_gpio.GPIO_Pin = LED_PIN;
        m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
        m_gpio.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_Init(LED_PORT, &m_gpio);
}

static void ledGpioToggle(void)
{
        LED_PORT->ODR ^= LED_PIN;
}

20mhz option byte.png (32.29 KB )

20mhz option byte.png

使用特权

评论回复

相关帖子

沙发
carychen17|  楼主 | 2020-12-28 03:04 | 只看该作者
没人理?

使用特权

评论回复
板凳
触觉的爱| | 2020-12-29 16:28 | 只看该作者
板是SMT加工的?外围参数核对过吗?

如果其它方面都没找出问题,替换一片MCU试试。这要是换了新的MCU上去,问题解决了 很可能就是MCU的问题。 当然了,替换前,再补焊一遍MCU排除焊接质量的影响

使用特权

评论回复
地板
HSXP063| | 2021-1-5 11:19 | 只看该作者

是批量贴吗   

使用特权

评论回复
5
carychen17|  楼主 | 2021-1-8 10:19 | 只看该作者

批量机贴。现在还有用手工贴几百个产品的?

使用特权

评论回复
6
gddddd| | 2021-1-8 15:46 | 只看该作者
主频不正常的MCU在仿真时查看HSICAL的值是否0x1B或者0x1C,如果偏差大了主频肯定就不对了,HSICAL粗调和HSITRIM细调是出厂调好的,也可程序中强制改写

使用特权

评论回复
7
annko2005| | 2021-1-8 16:04 | 只看该作者
你要用我们的最新的030M的库文件

使用特权

评论回复
8
carychen17|  楼主 | 2021-1-12 01:15 | 只看该作者
gddddd 发表于 2021-1-8 15:46
主频不正常的MCU在仿真时查看HSICAL的值是否0x1B或者0x1C,如果偏差大了主频肯定就不对了,HSICAL粗调和HSI ...

读到HSITRIM和HSICAL都为0。写了一个补丁,在数值不正常时填0x1b,0x08到上面寄存器。问题暂时解决了。
先谢谢了。
再问一下什么情况下会出现出厂校正数据丢失的情况?怎么避免?

使用特权

评论回复
9
carychen17|  楼主 | 2021-1-12 01:26 | 只看该作者
annko2005 发表于 2021-1-8 16:04
你要用我们的最新的030M的库文件

我下了HK32F030Mxx_Library_V1.1.3,新版lib确实在这个问题上打了个补丁。我发贴是12月3号,下载的新lib相关文件更改是12月10号。
然而,并没屁用。
下边是新lib中的补丁:
static void SetSysClock(void)
{
  /*reload the  hsi trimming value to the bit3~bit13  of RCC_CR register */
  uint32_t u32HSIFLASH = 0;
  uint32_t u32RCC_CR = 0;
  uint32_t u32HSITemp = 0;
  uint16_t u16HSITempH = 0;
  uint16_t u16HSITempL = 0;  
  
  u32HSIFLASH = *(uint32_t *) 0x1FFFF820;
  u16HSITempH = (uint16_t)(u32HSIFLASH>>16);
  u16HSITempL = (uint16_t)(u32HSIFLASH);

  if(!(u16HSITempH & u16HSITempL))
  {
    u32HSITemp = RCC->CR;
    u32HSITemp &= (uint32_t)((uint32_t)~(RCC_CR_HSITRIM|RCC_CR_HSICAL));
    u32RCC_CR = (uint32_t)(((u16HSITempL & 0x001F) <<3) | (((u16HSITempL>>5) & 0x003F)<<8));
    RCC->CR |= u32RCC_CR;      
  }
  /*end*/
。。。

显然,如果u16HSITempL为0,运行过程序,HSICAL还是0.

使用特权

评论回复
10
carychen17|  楼主 | 2021-1-22 04:09 | 只看该作者
又十天过去了,,也没个技术人员来说明一下怎么回事。

使用特权

评论回复
11
capron| | 2021-1-23 00:34 | 只看该作者
楼主,这个问题怎么解决的,贴一下

使用特权

评论回复
12
daluzhou333| | 2021-2-3 13:45 | 只看该作者
carychen17 发表于 2021-1-22 04:09
又十天过去了,,也没个技术人员来说明一下怎么回事。

看来这芯片不太靠谱,也没技术支持,还好无入坑。

使用特权

评论回复
13
单片小菜| | 2021-2-4 08:56 | 只看该作者
我感觉不太是楼主说的这个样子的。

使用特权

评论回复
14
snoopy521| | 2021-10-29 15:40 | 只看该作者
我批量用了将近4000个了,暂时没发现主频有异常的情况,我也忘了当时用的库是不是最新的了,吓得我赶紧得确认下我用的版本是多少,以免有隐患

使用特权

评论回复
15
kiwis66| | 2021-11-1 08:56 | 只看该作者
这个问题很奇怪,主频怎么会差这么多呢?
替换法试过了?验证下看看吧

使用特权

评论回复
16
sasdfji001| | 2021-11-1 11:07 | 只看该作者
这个问题的描述有点牵强,不太容易理解的。

使用特权

评论回复
17
udaidfa002| | 2021-11-1 11:34 | 只看该作者
这个问题很棘手,也很牵强,不知道该如何下手了。期待楼主有更好的**。

使用特权

评论回复
18
sadicy| | 2021-11-3 14:26 | 只看该作者
感觉楼主是很认真的人,
如果是我,200个里面,只有一个的话,很可能扔一边去了~~~

使用特权

评论回复
19
LucasYe| | 2021-11-4 10:44 | 只看该作者
楼主哪个型号,可以联系我,19866620108

使用特权

评论回复
20
gyzhuzicheng| | 2022-6-10 10:19 | 只看该作者
卖给你的供应商,找他啊

使用特权

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

本版积分规则

6

主题

16

帖子

2

粉丝