MCU知識總結(jié)
1. Brown-Out Reset
掉電復(fù)位,或電源電壓跌落復(fù)位, 當(dāng)輸入電壓VCC跌到某一門限時芯片復(fù)位
The MCU is reset when the supply voltage VCC is below the Brown-Out Reset threshold voltage
and the Brown-out Detector is enabled. The Brown-out threshold voltage is programmable.
2. Totem-pole
推拉輸出電路
3. IAR調(diào)試出現(xiàn)The stack plug-in failed to set a breakpoint on "main". The Stack window will not be able to display stack contents. (You can change this setting in the Tool>Options dialog box.)的警告,程序能燒進(jìn)去,但不能調(diào)試。
需要進(jìn)行如下配置:
iar->options->linker->output->format;
選擇 Debug information for c-SPY選項(xiàng)
4. newlib
newlib是一個用于嵌入式系統(tǒng)的開放源代碼的C語言程序庫,由libc和libm兩個庫組成,特點(diǎn)是輕量級,速度快,可移植到很多CPU結(jié)構(gòu)上。newlib實(shí)現(xiàn)了許多復(fù)雜的功能,包括字符串支持,浮點(diǎn)運(yùn)算,內(nèi)存分配(如malloc)和I/O流函數(shù)(printf,fprinf()等等)。其中l(wèi)ibc提供了c 語言庫的實(shí)現(xiàn),而libm提供了浮點(diǎn)運(yùn)算支持。
5. Open-drain
open-drain是漏極開路輸出的意思,相當(dāng)于集電極開路(open-collector)輸出,即ttl中的集電極開路(oc)輸出。
一般用于線或、線與,也有的用于電流驅(qū)動。
open-drain是對mos管而言,open-collector是對雙極型管而言,在用法上沒啥區(qū)別。
開漏形式的電路有以下幾個特點(diǎn):
(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賦值,我們可以用
* (unsigned int * ) 0x100000 = 1234;
那么要是想讓程序跳轉(zhuǎn)到絕對地址是0x100000去執(zhí)行,應(yīng)該怎么做?
*((void (*)( ))0x100000 ) ( );
首先要將0x100000強(qiáng)制轉(zhuǎn)換成函數(shù)指針,即:
(void (*)())0x100000
然后再調(diào)用它:
*((void (*)())0x100000)();
用typedef可以看得更直觀些:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();
又如
如果用 C 語言,可以像下列示例代碼這樣來調(diào)用內(nèi)核:
void (*theKernel)(int zero, int arch, u32 params_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. On Die Termination
ODT(On-die Termination,片內(nèi)終結(jié)器)是內(nèi)建核心的終結(jié)電阻器。
使用DDR SDRAM的主板上面為了防止數(shù)據(jù)線終端反射信號需要大量的終結(jié)電阻,它大大增加了主板的制造成本。實(shí)際上,不同的內(nèi)存模組對終結(jié)電路的要求是不一樣的,終結(jié)電阻的大小決定了數(shù)據(jù)線的信號比和反射率。因此主板上的終結(jié)電阻并不能非常好地匹配內(nèi)存模組,還會在一定程度上影響信號品質(zhì)。DDRII內(nèi)建了終結(jié)電阻器,為DDRII帶來了兩個好處,一個是去掉了主板上的終結(jié)電阻器使主板的成本降低,也使PCB板的設(shè)計(jì)更加容易。第二個好處是終結(jié)電阻器可以和內(nèi)存顆粒的"特性"相符,使DRAM處于最佳狀態(tài)?赐耆牧藛?喜歡就一起來點(diǎn)個 贊 吧!
編輯:admin 最后修改時間:2018-05-19