HK32F103 系列使用高性能的 ARM® CortexTM-M3 32 位的 RISC 内核,最高工作频率 80MHz,内置高达 128KB FLASH、20KB SRAM,1 个高性能计时器,3 个通用计时器,2 个 SPI 串行同步通讯接口,2 个 I2C 串行通讯接口,3 个 USART串行异步通讯接口,1 个 USB2.0 Full Speed 串行通信接口,1 个 CAN 总线控制器,2 个 12 位 SAR 模拟数字转换器,1 个片内温度传感器。
系统配置
客户需要区分 STM32F103 与 HK32F103 芯片
问题描述:
有一些客户需要通过识别 STM32F103 与 HK32F103 芯片,来实现应用程序或更高级后台软件的兼容处理。
解决方法:
通过读取下图中,4 个地址的低字节,进行判断。
区分 STM32F103 与 HK32F103 芯片
时钟配置
HSE 起振电容
HSE 起振电容
推荐:
HSE 起振电容,我们推荐使用 22pF。
HSE 跨接电阻
问题描述:
不同的晶体,采用不同的匹配电容,可能得到的频率都不同。
解决方案:
可以通过,增加一个 1M 欧姆电阻,来调整频率。
HSE 起振时间
问题描述:
HK32F103 起振时间较 STM32F103 稍长,导致如果使用 st 的代码进行系统初始化的时候,错误地检测到外部晶振无法起振。
解决方案:
通过将晶振起振等待计数变量的最大值(宏定义)改大的方式来延长起振的检测时间。
晶振起振等待计数变量的最大值(宏定义)改大
HSE 误使能
问题描述:
在使用 HK32F103 HSI 时,误使能了 HSE,但是外部没有接 HSE 电路和晶体,导致在外部有电机干扰时,出现程序跑死。
原因:在配置 sysclk 为 HSI-PLL 之前,先 enable 了 HSE,然后等待 HSE ready,如果没有等到 HSE ready 会 timeout 然后配置 sysclk 为 HSI-PLL。
因为板子上没有接外部晶体,同时在上电的时候外部有干扰发生,HSE 会输入毛刺误触发 HSE ready,这样在 timeout 之前就可能等到 HSE ready,然后 sysclk 就被软件错误配置为了 HSE-PLL,但实际上 HSE 没有输入,这样芯片就跑死了。
解决方案:
不使用 HSE,将它 disable。
电源管理
WFE 进入低功耗模式
问题描述:
如果用户程序希望通过 WFE 使芯片进入低功耗模式,则在下列情况下第一个 WFE 指令并不能使芯片进入低功耗模式:
在执行 WFE 之前,程序响应过中断。(因为根据 ARM Cortex-M3 的设计,只要执行中断返回指令就会在 CPU 内部记录一个 event,然后再执行 WFE 的时候就会被记录在 CPU 内部的 event 直接唤醒,因此从 MCU 芯片的角度开上去就是没有进入低功耗模式。)
解决方法:
1. 使用 WFI 进入低功耗模式;
2. 使用如下序列进入:
__SEV();
__WFE();
__WFE();
ST 的芯片没有遵从 ARM 的设计要求,因此 ST 的芯片即使在执行 WFE 执行响应过中断,也能通过 WFE 进入低功耗模式。这个在 ST 的勘误表中有描述。
ST 的勘误表描述
STOP 低功耗模式 JTDO 管脚处理方法
问题描述:
测试 STOP 模式工作电流时,为了达到标称值 10uA,需要按照下面的条件进行测试。
问题分析:
无
解决方法:
措施 1:如果不使用 JTAG 功能,仅使用 SWDP 功能,那么在进入低功耗模式前, 必须通过设置 AFIO_MAPR 将 SWJ 配置为 JTAG 关闭。
措施 2:如果 JTAG 和 SWD 都不使用,那么在进入低功耗模式前, 必须通过设置AFIO_MAPR 将 SWJ 配置为 JTAG/SWDP 都关闭。
措施 3:不管是否使用 JTAG 功能,那么在进入低功耗模式前,也可以通过在 TDO 管脚接上拉电阻来处理。按照 JTAG 下载线推荐电路,TDO 外接一个 10K 上拉电阻。
Notes:
AFIO_MAPR:SWJ_CFG[:0] 配置为 010(仅 SWD) 或 100(调试口关闭) .
例如使用 ST 库函数来配置:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // Enable SW but disable JTAG
- 文件大小:
- 1.03 MB
- 下载次数:
- 0
-
本地下载
|