深山老妖 发表于 2024-10-15 15:54:30

请教一下AI8051U的外部32.768晶振问题

新打的一块测试板,用的是AI8051U芯片,QFP48脚封装,外部接的是32.768K的晶振,负载电容20P,程序是按照官方的例程来写的,程序中只写了一个串口打印输出监测程序,上电后无反应,如果用示波器去测量晶振脚,波形是稳定的32.768,此时又有输出,但是输出是乱码,如果用默认的时钟,是能够正常输出串口信息的,这个会是哪里的问题?

晓飛飛 发表于 2024-10-15 16:00:35

只用32.768时钟的时候,需要按照这个时钟作为时基来配置串口波特率

邮箱 发表于 2024-10-15 16:38:43

波特率计算错了

深山老妖 发表于 2024-10-15 16:41:02

邮箱 发表于 2024-10-15 16:38
波特率计算错了

不是的,就算波特率错了,肯定也是输出错的,可是却没有输出

DebugLab 发表于 2024-10-15 16:46:53




小飞侠 发表于 2024-10-15 16:51:11

有可能晶振没启动成功,接上示波器晶振就启动了,可以换换电容试试

小飞侠 发表于 2024-10-15 16:52:00

仔细看看晶振的数据手册,匹配多大的负载电容

深山老妖 发表于 2024-10-15 18:25:07



/*
设置系统工作频率为40.0900M,
CREHF设置为0,CRECNT设置为:(16*40090000)/32768=19575.19,取值为19575(4C770H)
即CRECNTH设置为4CH,CRECNTL设置为77H,CRERSE设置为:19575*0.5%=98(62H)
*/

      X32KCR= 0xc0;                     //启动外部32.768K晶振
      while(!(X32KCR&0x01));
      IRCBAND = 0x04;//选择内部高速HIRC频段为44M段
      CLKSEL= 0x40;//选择内部高速HIRC为系统时钟源 P216
      CRECNTH = 0x4c;//设置目标频率高8位
      CRECNTL = 0x77;//设置目标频率低8位
      CRERES= 0x62;//设置追频误差
      CRECR   = 0x90;//设置追频速度 P235
//      while(!(CRECR&0x01));//等待追频校准完成

梁工 发表于 2024-10-19 11:44:05

让主频10分频输出一个时钟,看看主频频率是多少。

深山老妖 发表于 2024-10-19 17:29:21

本帖最后由 深山老妖 于 2024-10-19 18:18 编辑

梁工 发表于 2024-10-19 11:44
让主频10分频输出一个时钟,看看主频频率是多少。MCLKOCR = 0x0a;//P4.7 10分频输出
结果如下:



MCLKOCR = 0x64;//P4.7 100分频输出
结果如下:


每次上电后,必须要先用示波器探头探一下晶振的引脚,不然不起振,同样的晶振,同样的电容,在32F的板子上工作的好好的。


页: [1] 2
查看完整版本: 请教一下AI8051U的外部32.768晶振问题