寒武紀嵌入式軟體筆試試題及解析

2021-10-09 07:05:34 字數 3344 閱讀 2634

1.微控制器io口開漏輸出和推挽輸出有什麼區別?

開漏輸出:開漏輸出只能輸出低電平,如果要輸出高電平必須通過上拉電阻才能實現。就類似於三極體的集電極輸出。

推挽輸出:推挽輸出既可以輸出低電平,也可以輸出高電平,可以直接驅動功耗不大的數字器件。導通損耗小、效率高、既提高電路的負載能力,又提高開關速度。

推挽輸出:可以輸出高,低電平,連線數字器件。 

輸出 0 時,n-mos 導通,p-mos 高阻,輸出0。 

輸出 1 時,n-mos 高阻,p-mos 導通,輸出1(不需要外部上拉電路)。

開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內). 

輸出 0 時,n-mos 導通,p-mos 不被啟用,輸出0。 

輸出 1 時,n-mos 高阻, p-mos 不被啟用,輸出1(需要外部上拉電路);可以讀io輸入電平變化,此模式可以把埠作為雙向io使用。 

2.微控制器裡定時器有什麼作用和優勢?

作用:計數器、延時、輸入捕獲(解碼和測量時間間隔)、輸出比較(主要輸出pwm波)、單脈衝輸出、觸發中斷(對其他模組進行操作)

優勢:不需要cpu參與,精確

3.什麼是nyquist取樣定理?如果需要通過512點fft分析200-10khz訊號頻譜,頻譜解析度不低於40hz,此時取樣頻率需在什麼範圍?

頻率解析度可以理解為在使用dft時,在頻率軸上的所能得到的最小頻率間隔f0=fs/n=1/nts=1/t,其中n為取樣點數,fs為取樣頻率,ts為取樣間隔。所以取樣頻率不低於20480hz.與取樣頻率的不低於20000hz綜合得不低於20480hz

4.已知微控制器內建12位精度的adc,微控制器工作電壓3.3v,adc基準電壓3v,請計算adc取樣的電壓最小解析度是多少?如果微控制器adc輸入口電壓為1v,則取樣得到的值是多少?

不確定是否正確

先求誤差 (3.3-3)/3=10%

也是說當微控制器adc輸入口電壓為1v測得電壓為1.1v

在無誤差的情況下 解析度為 1/4096

本題的解析度為 1.1/4096(可以理解為一把尺子實踐的長度沒變,原先1個格仔代表1v,現在想表示1v需要占用1.1個格仔)

5.同步通訊和非同步通訊有什麼區別?uart、spi和i2c分別屬於什麼型別的通訊方式?

同步通訊需要一根時鐘線,並且通訊雙方的時鐘頻率要嚴格同步,系統搭建相對較複雜,成本高,但是傳輸的資料量少,速度快,其中時鐘的作用就是判斷收發資料的程序,定位當前傳輸的資料

非同步通訊可以不要時鐘線,系統較為簡單,由於缺少定位資料的時鐘線,所以必須在傳輸的資料幀前後加上開始、結束等冗餘字元,造成傳輸速度略有降低

uart全稱通用非同步收發器,無時鐘線,屬於非同步通訊

spi全稱序列外設介面,有時鐘線,屬於同步通訊

i2c全稱積體電路序列匯流排,有時鐘線,屬於同步通訊

6.簡述通過i2c介面讀取裝置x的暫存器y的值的過程

1.首先主機發起通訊(起始訊號),將裝置x的位址與暫存器y寫入從機;

2.從機接收訊號將命令(讀還是寫命令)與暫存器y位址提取出來,

3.從機將暫存器y位址的資料放入從機i2c輸出buffer

4.主機再次發起一次通訊,讀取從機資料。

7.中斷是什麼?請簡述微控制器中斷處理的過程

cpu在正常執行程式的過程中,由於內部/外部事件的觸發或程式的預先安排引起cpu暫時中斷當前正在執行的程式,而轉去執行中斷服務子程式,待中斷服務子程式執行完畢後,cpu繼續執行原來的程式,這一過程稱為中斷;

中斷處理的過程:

8.相比於正常子函式,中斷服務函式有什麼特點和需要注意的地方?

相當於正常子函式,中斷服務函式的特點是沒有輸入引數,一般也沒有輸出引數,此外,呼叫中斷服務函式的方式也有所區別,正常子函式的呼叫直接在需要的位置寫出子函式名即可,程式執行到此即進入子函式內部;呼叫中斷服務函式,需要在程式中開啟中斷開關,即配置對應中斷控制的暫存器,當出現觸發條件時(例如某引腳電平訊號發生變化,或時間達到某一值),就會進入中斷服務函式體內執行

注意地方:中斷函式中不宜寫太多的**,這樣可能導致中斷服務函式還未執行完,因為符合條件,又觸發了一次中斷,程式就一直卡在中斷服務程式中,導致整個系統崩潰。另外,當系統有多個中斷時,為防止在執行當前中斷服務函式時,被另乙個不必要的中斷打斷,乙個可以參考的解決方法時在進入中斷時關閉其他中斷,並在中斷服務函式的最後一句再次開啟中斷開關。

9.對於char型變數 a,寫兩段**分別將 a的 bit 6置1和置0

a|=(1<<6); a&=~(1<<6);

10.請寫一段**,可以將輸入為」0.0.0.0」—「255.255.255.255」的字串轉換為int型整數陣列。

輸入:」255.255.255.255」

輸出:255 255 255 255 (陣列)

#include

#include

#include

intmain()

;

gets(arry);

intlen=strlen(arry);

inti=0,count=0;

while(i

res[count] *=10;

res[count] +=(arry[i]-'0'); //字元轉數字

i++;

}

for(intj=0;j<4;j++)

}

寒武紀2019秋招嵌入式軟體開發崗筆試

推挽輸出 推挽輸出既可以輸出低電平,也可以輸出高電平,可以直接驅動功耗不大的數字器件。推挽輸出電路 推挽電路是由兩個三極體或mosfet,以推挽方式存在於電路中,電路工作時,兩隻對稱的開關管每次只有乙個導通,所以導通損耗小 效率高 既提高電路的負載能力,又提高開關速度。其示意結構如下圖所示 當內部輸...

凹凸筆試題目(嵌入式軟體開發)

參 1 5存在風險,因為c c 5 這個表示式對c有兩次修改,行為未定義,c的值不確定 int a 0 data section int b data section static char c bss int main int argc,char argv a 2,b 100,c 2,d 6,e ...

嵌入式軟體工程師筆試題

一 選擇題 1 定義函式 時,預設函式的型別宣告,則函式型別取預設型別 a.void b.char c.float d.int 參 d 二 簡答 1 多型類中的虛函式表是compile time,還是run time時建立的?參 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位...