请教LGT内部RC振荡器的用法及程序加密
用LGT8F08A官方的评估小板测试时,发现内部RC文档中提到的16M,经两分频后由OC0输出,用频率计测量只有7.1M,因为用内部RC做串口通讯,一直没成功,在4800bps也不能正常通讯,所以用上面的方法测量它的振荡实际频率。请问版主和诸位,用RC振荡器是否有类似的问题,是否要自己核准?
用外置7.3728M晶振,串口通讯很好用的。
还有1个问题,用仿真器通过SWD接口对芯片烧写程序后,是否能加密?AVR Studio烧写界面的熔丝位配置是否有效,加密是用AVR Studio的编程加密页面来完成的吗?
先谢谢大家!
测试代码如下:
//初始化为CTC模式,输出2分频系统时钟
void Init_Timer0(void)
{
TCCR0A = 0x42; //CTC模式,输出翻转
OCR0A= 0x00;
TCCR0B = 0x01; //
}
DDRA = 0x8F; //PA7/OC0设置为输出,PA0-3为输出
我手里的片子16M做软usb还是ok的
第二个问题需要使用官方的isp软件进行加密 请问是SOP24还是SOP8的小板? 这个应该是没有校准过的,你向OSCCAL(地址:0x66),写一个0x0a, 看看时钟的变化,然后根据变化在调整下这个值 谢谢楼上两位,我用的板子图片如下:
attach://157245.jpeg
再请教一下GoodCode网友,只用仿真器,官方的那个PC上运行的ISP软件检测不到硬件,我怎么能加密呢?难度仿真器只有仿真调试功能吗?
还有这个芯片的SWD仿真接口和ISP编程接口好象不是一个接口,引脚都不一样,我这样理解是对的吗? 08A是这样的, 调试器和ISP工具是两个接口,两种工具的, 调试器不能用于加锁和解锁;
对于08A, ISP工具只有和08A的ISP下载器配合使用才可以识别到设备。
这样用起来是不方便,因此我们在88A上就完全统一了接口和硬件,以后的芯片也都会这样做。 不过如果是你量产,我们有提供脱机烧写器,下载完后自动加锁,也非常方便。 谢谢版主的指导,又翻了一下文档,基本上搞明白了RC振荡器的特性了。
文档中关于RC校准的描述如下:
默认设置下系统时钟为16MHz晶振输出时钟的二分频,并且晶振的可调参数RCCAL = 0x0;
上电默认是最低振荡频率,设置成RCCAL= 6时,大概在7.6M左右,在15时,为8.2M左右,最后选了个RCCAL= 2,输出频率是7.3M左右,此时内部RC振荡为14.6左右,这个与晶振7.3728M很接近,所以19200通讯时误差比较小。
关于找到合适的校准值 ,文档中有详细地介绍如下:
片内16MHz晶振的精调过程:
1) 测量16MHz晶振的输出时钟频率Fm,可通过测量PWM波形的频率来计算系统时钟的频率,默认设置下系统时钟为16MHz晶振输出时钟的二分频,并且晶振的可调参数RCCAL = 0x0;
2) 比较Fm和目标时钟频率Ft(如16MHz),若相等则晶振参数不用调整即保持RCCAL值不变,若Fm > Ft进入步骤3),若Fm < Ft进入步骤4);
3) 当Fm > Ft,取FLSB = 1% * Fm,Y = (Fm – Ft)/FLSB,Z = 64 – ROUND(Y);
4) 当Fm < Ft,取FLSB = 1% * Fm,Y = (Ft – Fm)/FLSB,Z = ROUND(Y);
5) 计算出的Z值即为晶振精调参数,把Z值写入RCCAL即可。
如果一批芯片特性差不多,取相同的RCCAL都能用还行,如果每个芯片都有较大的差异性,那调起来就比较麻烦了,
最好能出厂里将芯片校准到16M,上电后自动读取校准值到RCAL中,这样就比较好用了,16M是能用19200以下波特率稳定串口通讯的。 国产的STC单片机15系列,他的RC振荡器通过串口下载程序时同时改变成22.1184,24M等好多档自已认为合适的频率,这个做流就非常值得学习,这样用户用起来就比较简单省事,能低成本(省外部晶振),低人工支出的生产电子产品。
呵呵,为了省个晶振,要校准很多次才能用,有时真不划算的。{:titter:} 这个我们批量供货都一定是已经校准到1%的,用户不用管。你拿到的这个小板应该是早期没有校准的
页:
[1]