掉電復(fù)位,或電源電壓跌落復(fù)位,當(dāng)輸入電壓VCC跌到某一門限時芯片復(fù)位

TheMCUisresetwhenthesupplyvoltageVCCisbelowtheBrown-OutResetthresholdvolt">

国产亚洲不卡一卡2卡三卡4卡网站_中文字乱码在线生成2021_yellow片高清_黄黄的高清无码网站_XXXX9999无码

大學(xué)校園網(wǎng)

大學(xué)生活網(wǎng) > 大學(xué)生學(xué)習(xí) > 電氣工程

MCU知識分析

1.Brown-OutReset

掉電復(fù)位,或電源電壓跌落復(fù)位,當(dāng)輸入電壓VCC跌到某一門限時芯片復(fù)位

TheMCUisresetwhenthesupplyvoltageVCCisbelowtheBrown-OutResetthresholdvoltage

andtheBrown-outDetectorisenabled.TheBrown-outthresholdvoltageisprogrammable.

2.Totem-pole

推拉輸出電路

3.IAR調(diào)試出現(xiàn)Thestackplug-infailedtosetabreakpointon"main".TheStackwindowwillnotbeabletodisplaystackcontents.(YoucanchangethissettingintheTool>Optionsdialogbox.)的警告,程序能燒進去,但不能調(diào)試。

需要進行如下配置:

iar->options->linker->output->format;

選擇Debuginformationforc-SPY選項

4.newlib

newlib是一個用于嵌入式系統(tǒng)的開放源代碼的C語言程序庫,由libc和libm兩個庫組成,特點是輕量級,速度快,可移植到很多CPU結(jié)構(gòu)上。newlib實現(xiàn)了許多復(fù)雜的功能,包括字符串支持,浮點運算,內(nèi)存分配(如malloc)和I/O流函數(shù)(printf,fprinf()等等)。其中l(wèi)ibc提供了c語言庫的實現(xiàn),而libm提供了浮點運算支持。

5.Open-drain

open-drain是漏極開路輸出的意思,相當(dāng)于集電極開路(open-collector)輸出,即ttl中的集電極開路(oc)輸出。

一般用于線或、線與,也有的用于電流驅(qū)動。

open-drain是對mos管而言,open-collector是對雙極型管而言,在用法上沒啥區(qū)別。

開漏形式的電路有以下幾個特點:

(1).利用外部電路的驅(qū)動能力,減少IC內(nèi)部的驅(qū)動。或驅(qū)動比芯片電源電壓高的負(fù)載.

(2).可以將多個開漏輸出的Pin,連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系。這也是I2C,SMBus等總線判斷總線占用狀態(tài)的原理。如果作為圖騰輸出必須接上拉電阻。接容性負(fù)載時,下降延是芯片內(nèi)的晶體管,是有源驅(qū)動,速度較快;上升延是無源的外接電阻,速度慢。如果要求速度高電阻選擇要小,功耗會大。所以負(fù)載電阻的選擇要兼顧功耗和速度。

(3).可以利用改變上拉電源的電壓,改變傳輸電平。例如加上上拉電阻就可以提供TTL/CMOS電平輸出等。

(4).開漏Pin不連接外部的上拉電阻,則只能輸出低電平。一般來說,開漏是用來連接不同電平的器件,匹配電平用的。

6.C語言中將絕對地址轉(zhuǎn)換為函數(shù)指針以及跳轉(zhuǎn)到內(nèi)存指定位置處執(zhí)行的技巧

要對絕對地址0x100000賦值,我們可以用

*(unsignedint*)0x100000=1234;

那么要是想讓程序跳轉(zhuǎn)到絕對地址是0x100000去執(zhí)行,應(yīng)該怎么做?

*((void(*)())0x100000)();

首先要將0x100000強制轉(zhuǎn)換成函數(shù)指針,即:

(void(*)())0x100000

然后再調(diào)用它:

*((void(*)())0x100000)();

用typedef可以看得更直觀些:

typedefvoid(*)()voidFuncPtr;

*((voidFuncPtr)0x100000)();

又如

如果用C語言,可以像下列示例代碼這樣來調(diào)用內(nèi)核:

void(*theKernel)(intzero,intarch,u32params_addr)

=(void(*)(int,int,u32))KERNEL_RAM_BASE;

……

theKernel(0,ARCH_NUMBER,(u32)kernel_params_start);

KERNEL_RAM_BASE是內(nèi)核在系統(tǒng)內(nèi)存中的第一條指令的地址。

7.OnDieTermination

ODT(On-dieTermination,片內(nèi)終結(jié)器)是內(nèi)建核心的終結(jié)電阻器。

使用DDRSDRAM的主板上面為了防止數(shù)據(jù)線終端反射信號需要大量的終結(jié)電阻,它大大增加了主板的制造成本。實際上,不同的內(nèi)存模組對終結(jié)電路的要求是不一樣的,終結(jié)電阻的大小決定了數(shù)據(jù)線的信號比和反射率。因此主板上的終結(jié)電阻并不能非常好地匹配內(nèi)存模組,還會在一定程度上影響信號品質(zhì)。DDRII內(nèi)建了終結(jié)電阻器,為DDRII帶來了兩個好處,一個是去掉了主板上的終結(jié)電阻器使主板的成本降低,也使PCB板的設(shè)計更加容易。第二個好處是終結(jié)電阻器可以和內(nèi)存顆粒的"特性"相符,使DRAM處于最佳狀態(tài)。