MCU超频时,点灯失败 | AI8051U 可以工作在40MHz, pwm@120MHz
实验环境mcu:8051U-34K64@7.4.11U
下载时高速IRC频率调整为 45.1584MHz
问题描述
烧录程序时把IRC频率调整为45.1584MHz,无法准确地操作IO状态。例如,拉低P0.7的电平。
代码中已经参照手册第7章,逐bit修改寄存器,以下是关于HSCLK的配置代码:
HSCLKCONF:
; master clock source selection
MOV DR28, #WORD0 CLKSEL
MOVH DR28, #WORD2 CLKSEL
MOV R11, @DR28
ANL A, #NOT 4FH
MOV @DR28, R11
; enable internal HIRC
MOV DR28, #WORD0 HIRCCR
MOVH DR28, #WORD2 HIRCCR
MOV R11, @DR28
ORL A, #80H
MOV @DR28, R11
WAITHIRCDONE:
MOV R11, @DR28
JNB ACC.0, WAITHIRCDONE
; high speed I/O's clock prescale: 1
MOV A, #1D
MOV DR28, #WORD0 HSCLKDIV
MOVH DR28, #WORD2 HSCLKDIV
MOV @DR28, R11
; I2S's clock prescale: 1
MOV A, #1D
MOV DR28, #WORD0 I2S_CLKDIV
MOVH DR28, #WORD2 I2S_CLKDIV
MOV @DR28, R11
; MCLK prescale
MOV A, #4D
MOV DR28, #WORD0 CLKDIV
MOVH DR28, #WORD2 CLKDIV
MOV @DR28, R11
RET想拉低P0.7. 已经使能P0.7的高速IO翻转模式,仍然无法控制它。
但是如果在烧录时,把IRC配置为12MHz,则能正常控制P0.7的电平。
请教下,是哪里出错了?
在MCU高频率运行时,IO操作失败可能与时钟配置、时序问题或硬件延迟有关。首先,确保HSCLK配置正确,特别是时钟源选择(CLKSEL)和分频设置。45.1584MHz的频率较高,可能导致IO端口响应时间不足。建议检查以下方面:<br><br>1. **时钟稳定性**:确认高速IRC的稳定性,必要时增加滤波电容。<br>2. **IO驱动能力**:高频率下,IO端口的驱动能力可能不足,尝试降低频率或增加延时。<br>3. **时序分析**:使用示波器检查P0.7的电平变化,确认是否满足时序要求。<br>4. **寄存器配置**:确保HSCLKCONF寄存器的配置与手册一致,特别是时钟源和分频设置。<br><br>建议逐步降低频率测试,定位问题根源。若问题持续,可进一步检查硬件电路或MCU的电气特性。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考] 8051u还是42m以下比较保险,超了估计有问题 建议多看看芯片手册,让芯片工作在比较可靠的状态下 接近极限频率先正确设置IAP_TPS 我一般不用接近极限频率的频率 xxkj2010 发表于 2025-3-10 14:33
我一般不用接近极限频率的频率
你好,是这样,因为启用了I2S外设,采样率为44.1KHz,结果一推算,就造成mcu频率成这样了 你这是弄不死就往死里弄啊{:4_165:} 使用极限频率是需要特殊的条件和环境呢?还是这个极限频率是厂家实验室的实验结果,用户是无法启用的?
我虽然从来不用极限频率,也想顺便了解一下
晓飛飛 发表于 2025-3-10 14:04
建议多看看芯片手册,让芯片工作在比较可靠的状态下
您好,是我打开了I2S外设,倒推出这么高的频率
试了下对96/144 MHz的PLL分频,无法得出整数的分频值
页:
[1]