1.振荡器
问:内部时钟振荡器是不是不稳定?是否可以用于产生波特率的时基?
答:不同器件的内部时钟振荡器的精度是不同的(±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(<1%温度变化范围-40-+85℃)。由于不同器件内部振荡器的离散性较大,所以不能用于产生波特率,应该外接标准晶体(而C8051F300/301内部振荡器精度为±2%,可用于产生波特率)。
问:片内/外振荡器如何配置?
答:正确步骤:
1. 允许外部振荡器;
2. 等待1ms;
3. 查询XTLVLD '0'->'1'
4. 切换到外部振荡器。
注意:振荡器频率的选择,即OSCXCN寄存器的配置(外部振荡器频率控制位的设置)。
汇编和C的部分源代码如下:
汇编:
mov OSCXCN, #67h ;允许外部振荡器频率为18.432MHz
clr A ;最少等待1ms
djnz acc, $ ;等待~512us
djnz acc, $;等待~512us
osc_wait:;查询XTLVLD是否为1
mov a, OSCXCN
jnb acc.7, osc_wait
orl OSCICN, #08h;选择外部振荡器作为系统时钟源
orl OSCXCN, #80h ;使能丢失时钟检测器
C语言:
void SYSCLK_Init (void)
{
int i; //延时计数器
OSCXCN = 0x67; //启动外部振荡器用22.1184MHz晶体
for (i=0; i < 256; i++); //最少等待>1ms
while (!(OSCXCN & 0x80)); //等待晶体稳定
OSCICN = 0x88; //选择外部振荡器作为系统时钟源
//使能丢失时钟检测器
}
2.模数转换
问:从上电(或退出掉电模式)到ADC稳定开始转换需要多长时间?
答:模拟建立时间也就是等待参考电平稳定的时间。它取决于接在VREF引脚的电容容量。此电容越大VREF的噪音就越小,ADC转换结果的噪音也就越小。如果用4.7uF电容,则稳定时间大约为2ms,如果无旁路电容(不推荐),稳定时间大约为10us。
注意:在开始转化之前,需要一个1.5us的跟踪时间,这也就决定了ADC多路转换开关(MUX)的切换速度。
问:ADC的最大VREF电压:
答:内部参考:2.40±0.03V;
外部参考:VA+-0.3V。
问:ADC的最大输入电压及输入阻抗?
答:ADC的最大输入电压为VREF。输入电容为10pF;输入阻抗等价于一个5kΩ电阻和一个10pF电容的串联。
请参考应用笔记AN019"计算开关电容ADC的建立时间"。
问:ADC可编程窗口检测器有什么用途?
答:ADC可编程窗口检测器在很多应用中非常有用。它不停地将ADC输出与用户编程的限制量进行比较,并在检查到越限条件时通知系统控制器。这在中断驱动的系统中尤其有效。既可以节省代码空间和CPU带宽又能提供快速响应的时间。
问:C8051F020/F021的内部参考如何使用?
答:F020:如果ADC0、ADC1及DAC都使用内部参考,将VREF连接到VREF0、VREF1、VREFD引脚,
F021:将VREF连到VREFA引脚即可。
3.端口
问:器件IO口的吸收(sink)电流和源(source)电流是多少?
答:GPIO(通用IO)引脚当电压为0.6V时可以吸收8.5mA的电流。当电压为VDD-0.7V时的源电流为3mA。
问:在GPIO引脚上的弱上拉的值是多少?
答:当VDD=3.0V时,上拉值大约为100KΩ左右。
问:Silicon Lab C8051FXXX系列单片机的IO口与传统8051单片机相比有什么区别?
答:①Cygnal C8051FXXX系列单片机的IO口全部为三态双向口(而传统8051单片机P1、P2、P3口为准双向口),内部有弱上拉可禁止(传统8051单片机固有),可配置为开漏输出和推挽输出(传统8051单片机只有开漏输出)。
②片内数字资源要通过数据交叉开关(crossbar)按一定的优先级配置到IO引脚(C8051F2XX系列除外,而传统8051单片机不具备这一功能)。
问:Silicon Lab 8051FXXX系列单片机电源电压全部为2.7-3.6V,那么是否有与5V系统接口的比较简单的解决方案?
答:所有IO口允许5V(极限值为5.8V)输入,但是输出为VDD电平。如果与5V系统接口,最简单的方法是在输出端加上拉电阻,关键是上拉电阻的选择。具体参考应用笔记AN011"在5V系统中使用C8051FXXX"。
建议:如果可能,请尽量选用电压供电兼容的芯片,这是一种最理想的选择。
问:模拟引脚能否简单地用于数字I/O?
答:如果模拟引脚是独立的是不可以的。但是如果模拟引脚和数字IO是复用的,是可以通过SFR的设置来完成配置。
问:C8051F020/022的p4-p7口和p0-p3口有什么不同?
答:P0-P3口复位时为通用口,可通过Crossbar(数据交叉开关)寄存器按优先级设置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位寻址。