[技术问答]

修改003的RC发生器频率的疑问

[复制链接]
962|11
手机看帖
扫描二维码
随时随地手机跟帖
dongnanxibei|  楼主 | 2018-6-3 11:07 | 显示全部楼层 |阅读模式
N76E003 有两个字节的SFR,更改这两个字节的数值,可以直接对HIRC频率产生改变,由于每更改一阶HIRC更改的值是恒定的,且由于HIRC已调整至非常准确的16 MHz,所以对这两个寄存器目前的值直接减去15,就可以得到16.6 MHz的结果。
下列两个字节产生9位的HIRC调整值,每个位更改大约产生16 MHz的0.25%偏差,也就是一阶 40 KHz
983455b135b463fbb6.png
手册图表显示的这两个字节。
dongnanxibei|  楼主 | 2018-6-3 11:08 | 显示全部楼层
下面列出调整HIRC的例程,
sfr RCTRIM0 = 0x84;
sfr RCTRIM1 = 0x85;
bit BIT_TMP;
#define set_IAPEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON|=SET_BIT0 ;EA=BIT_TMP
#define set_IAPGO BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPTRG|=SET_BIT0 ;EA=BIT_TMP
#define clr_IAPEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON&=~SET_BIT0;EA=BIT_TMP
unsigned char hircmap0,hircmap1;
unsigned int trimvalue16bit;
void MODIFY_HIRC_VLAUE(void)
{
set_IAPEN;
IAPAL = 0x30;
IAPAH = 0x00;
IAPCN = READ_UID;
set_IAPGO;
hircmap0 = IAPFD;
IAPAL = 0x31;
IAPAH = 0x00;
set_IAPGO;
hircmap1 = IAPFD;
clr_IAPEN;
trimvalue16bit = ((hircmap0<<1)+(hircmap1&0x01));
trimvalue16bit = trimvalue16bit - 15;
hircmap1 = trimvalue16bit&0x01;
hircmap0 = trimvalue16bit>>1;
TA=0XAA;
TA=0X55;
RCTRIM0 = hircmap0;
TA=0XAA;
TA=0X55;
RCTRIM1 = hircmap1;
}
但是这个例子里面用的手法是读取的0x30和0x31.为什么不是84和85呢?手册也没有介绍。

使用特权

评论回复
dongnanxibei|  楼主 | 2018-6-3 11:08 | 显示全部楼层
莫非这两对寄存器有关系?

使用特权

评论回复
dongnanxibei|  楼主 | 2018-6-3 11:09 | 显示全部楼层
希望新唐能下次更新手册时候提供这个信息啊,要不然不知道咋回事,稀里糊涂的用,心里不舒服啊,已经好几个人不爽了。

使用特权

评论回复
huangcunxiake| | 2018-6-3 11:34 | 显示全部楼层
可能有映射关系。

使用特权

评论回复
xuanhuanzi| | 2018-6-3 13:11 | 显示全部楼层
不知道写例程的人出于何种目的。

使用特权

评论回复
xuanhuanzi| | 2018-6-3 13:12 | 显示全部楼层
确实没有提到这个东西,这个应该是芯片隐藏了什么特别的功能。莫非有后门。

使用特权

评论回复
小明的同学| | 2018-6-3 13:53 | 显示全部楼层
这个我当初也没有多想,直接复制了这一段代码。

使用特权

评论回复
小灵通2018| | 2018-6-3 17:51 | 显示全部楼层
虽然是个小问题,看你们这些单身讨论的很起劲,让我小白收获良多。

使用特权

评论回复
dongliushui| | 2018-6-4 23:17 | 显示全部楼层
应该有一些不太重要的地方,人家没说。不过我们能实现修改频率就行了

使用特权

评论回复
zhuotuzi| | 2018-6-5 19:42 | 显示全部楼层
不管那么多了,直接用这一段就行了。

使用特权

评论回复
lomo1316| | 2018-7-12 16:27 | 显示全部楼层
今天刚好看到这里,原因大概是RCTRIM0、RCTRIM1两个寄存器可以被修改,从0x84/0x85里面读参数的话,就不是原厂校准的16M的误差参数,而0x30/0x31里存的就是原厂出厂的16M校准参数,由于该值一直固定,不能修改,所以应该从这里读值,而减去15,是因为15*40K Hz=0.6M Hz,刚好为16.6M Hz,从这里也可看出,如果是加上15,可能就是15.4M Hz,依次类推,可以修改工作频率,虽然并无卵用

使用特权

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

本版积分规则

187

主题

3481

帖子

16

粉丝