單片機(jī)
最近在玩新唐的M451開發(fā)板,遇到要測試IO管腳的最大翻轉(zhuǎn)速度,經(jīng)過一番研究終于測出來了,在這里做一個總結(jié),希望對遇到同樣問題的朋友,有所幫助。
新唐的MCU,IO口的翻轉(zhuǎn)速度理論上的最大值是50MHz,但是理論與現(xiàn)實(shí)往往是有差距的,因此想要知道一款單片機(jī)IO口的真正翻轉(zhuǎn)速度,就需要自己去真實(shí)的測試。
測試方法:在程序中配置一個IO口為推挽輸出模式,寫一個while(1){} 循環(huán),循環(huán)里面不停的將IO口拉低,拉高,拉低,拉高......然后用示波器去測試這個管腳的波形,從示波器上讀出那個最高的頻率是多少。
注意事項(xiàng): 1.對于IO口的輸出波形,正常情況下應(yīng)該是方波。
2.寫測試程序時,也盡可能的簡單,不要有其他的干擾,只需要配置系統(tǒng)時鐘,定義IO口,然后就是while循環(huán)了。
3.在IO口翻轉(zhuǎn)速率較低的時候,觀察波形,是正常的方波,隨著翻轉(zhuǎn)速度的不斷加大,波形有可能會失真,而不再是一個方波了。在波形有失真時去觀察這時候的頻率的最大值,一般就是IO口的最大翻轉(zhuǎn)速率。
4.在while循環(huán)中的拉低,拉高盡量寫的多點(diǎn),這樣就更接近真實(shí)值。因?yàn)閷ρh(huán)條件的判斷上也是要占用時間的
下面是具體的代碼,代碼基于新唐M451開發(fā)板
int main(void)
{
SYS_Init();
GPIO_SetMode(PC, BIT5, GPIO_MODE_OUTPUT);
while(1)
{
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
......
}
}