1、自己做了個STM32的板子,但是手里沒有8M的晶振,所以就用了,12M的,但是不正常,上電之后PA15和PA14接的是兩個led,PA15接的led常亮,PA14接的的led不亮,而且芯片下載程序又能下載,應該不是芯片壞的問題吧,而且不管我些什么程序進去,兩個腳的狀態(tài)都不變,我懷疑是電路有問題,可是我仔細檢查了電路和板子,都沒問題,JTAG正常使用。我用的是12M的晶振,這會有影響嗎?感覺不管下什么程序進去感覺芯片好像沒有運行。
答:如果使用12M的晶振,那么要修改啟動文檔中的關于RCC的語句。因為如果你使用庫文件的話,ST的庫,默認外部晶振是8M,所以如果你不修改RCC部分的語句,會造成CPU不啟動,或者啟動不成功?,F象是,在MDK環(huán)境下,能夠通過JTAG識別到芯片,但是無法下載或者debug。會提示can not attach CPU。
2、突然想到這個問題,外部無源晶振選擇大小的區(qū)別是什么?對STM32芯片它都要先分頻,再倍頻。我在想,假設,如果它分頻都要降到2M,再倍頻上去那我直接2M的晶振1分頻再倍頻,跟24M先12分頻再倍頻他們的區(qū)別是什么?還是說本身就是任意的,根據自己需要選擇?
答:方便各種應用場景。
3、自己做的STM32F103RBT6板子,外接8M晶振,現在程序下載正常,運行正常,在程序初始化時用到Stm32_Clock_Init(9)這條語句,我想問下是不是外部晶振如果沒起振在執(zhí)行這條語句時會停止?也就是說我的程序下載和運行都正常說明外部晶振肯定起振了,而且已經倍頻到72M了。
答:默認是用內部8M RC震蕩的,你切換為PLL之后,才是使用8M倍頻的,如果你注釋掉Stm32_Clock_Init(9),那么代碼也會跑,但是是用內部8M RC震蕩。
4、外部晶振換成了25MHz,但是想方便的移植以前8MHz板子上程序,應該怎么修改系統時鐘?看了system_stm32f10x.c系統時鐘設置,但是不知道怎么修改!下面參數是system_stm32f10x.c系統時鐘設置
//默認SYSCLK_FREQ_72MHz 可在system_stm32f10x.c改變設置。
//默認 HCLK = SYSCLK;
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
//默認 PCLK2 = HCLK
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
//默認 PCLK1 = HCLK
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
//默認 PLL as system clock source; RCC_CFGR_SW_PLL;
答:25M不用想了,必須是25的整數倍才行。
要是把它設置成75MHz 具體怎么修改哪些配置參數?25*3=75,設置倍頻數為3。但是庫函數這個不懂,寄存器的就很簡單。
5、STM32的RTC不能用,想確定是否硬件問題。但不知道測量的是哪2個引腳。
答:1,去掉RTC晶振的電容。
2,換晶振。
如果1、2還不行,多換幾個晶振;如果還不行,換MCU。換到能用為止; STM32的RTC,就這么蛋疼。
6、手頭有幾塊RTC初始化不成功的,到底是啥原因,用示波器也看不到波形,一共有30塊板子大概有5塊出現這種問題,時鐘不正常,其中拿一塊是換了IC,然后OK的,不會是IC問題吧,如果是IC問題,那后期生產不好弄啊。
答:就算你用6pf負載電容晶振,STM32的rtc還是會有一部分不能起振的。如果產品確實需要RTC功能,我建議你還是外加RTC芯片靠譜點。
7、32K內部晶振、16M內部晶振、32K外部晶振,弱弱的想有16M的可以分頻還要那兩個干嘛啊,為什么分內外啊16M的為什么不設成外部晶振呢?以下是百度的一段話,外部晶振穩(wěn)定內部晶振的誤差比較大,但如果對頻率要求不高的話(比如不涉及串口通信和精確定時等的話,用內部晶振就行。內部時鐘,頻率受溫度等其它影響,但是能省下晶振的錢,還有2個I/O。如果對頻率要求不高,一般是優(yōu)先選用內部振蕩。如果你要省電,用了SLEEP,那你就不能用內部振蕩了,內部振蕩回停止!
答:STM32一般推薦用內部8MRC或者外部8M晶振。你這個16M,除非個人癖好,一般沒必要用。 用內部還是外部,主要看你自己的考慮了。理論上說,外部準確度高,用到USB通信的時候,建議用外部晶振。另外,內部RC是無法倍頻到72M的,最高是4*16=64Mhz。但是內部晶振如你所說:1、不占空間。2、省成本。所以,底用內部還是用外部,根據自己需求來就可以了。
8、求一個用內部晶振HSI作系統時鐘源的系統時鐘配置函數。最好是寄存器版的。
答:把我們的Stm32_Clock_Init屏蔽,用的就是內部8M RC震蕩了。
9、焊接了一個STM32F103C8T6的最小系統,晶振是16MHZ,程序不能正常運行?怎樣修改哪些程序使芯片的還是在72MHZ下工作。只用下面這個函數修改時鐘,但是程序還是不能運行,串口發(fā)送數據一堆沒用的數據。該怎樣設置???
答:修改SetSysClockTo72函數中有關時鐘配置的地方。
RCC->CFGR&=(uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);
RCC->CFGR=(uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLMULL9);
以上是8M晶振的設置,把分頻和倍頻改成你要的值。
10、請問在“OptionforTarget”里的“Target”的XTAL填的MHZ數就是開發(fā)板上那個兩頭圓的晶振的參數嗎,我的那個上面顯示的Y8.000,是不是就填8就可以了。另外,還有一個圓柱形兩個管腳的聽說那也是晶振,那“Target”里XTAL的參數到底該照誰的填?ALIENTEK教程里的源代碼默認都是72MHZ,應該都要改吧。
答:填8M,32.768K是rtc晶振不用填。
11、STM32沒有8M的外部晶振,依然可以運行跑馬燈實驗(程序設定使用外部晶振),有人知道是為啥不?自己焊了一塊板子,沒有接外部的8MHZ晶振,可是將原子的跑馬燈程序下載進去之后,小燈竟然間歇性的閃爍了??墒窃拥某绦蚶锩婷髅魇怯玫耐獠烤д癜。?/p>
答:沒外部的直接切換到內部晶振。
12、stm32f103c8t6的五六腳應該接多大的晶振?
答:系統時鐘(SYSCLK)有3個來源,內部高速8M時鐘(HSI),PLL時鐘和外部高速時鐘(56腳接的HSE),而PLL時鐘又有2個來源,即內部高速時鐘2分頻(HSI/2=4M)和外部高速時鐘(HSE)。通常SYSCLK常用PLL倍頻而來,當SYSCLK=72M,外部(5-6腳)接8M晶振,經過9倍頻即為72M,如果外部使用12M,那只需要6倍頻即可得到72M SYSCLK,具體的細節(jié)請參考STM32參考手冊6.2節(jié)(那個時鐘樹很清晰明了)。
13、戰(zhàn)艦stm32開發(fā)板上,32.768K晶振電路的作用?這部分電路有什么作用???去掉會有什么影響嗎?提供時鐘的不是8M晶振那部分時鐘電路嗎?
答:建議你看看時鐘樹,32.768可以做RTC的時鐘源。
14、系統時鐘可以由內部時鐘RC振蕩器、外部時鐘、鎖相環(huán)三者提供,那么設置成內部時鐘,是不用外部放置8M晶振了?
答:可以用內部時鐘,不用接外部晶振,只是外部時鐘更好一些。
15、如果不用RTC,最小系統可以去掉一個晶振嗎?最近正在自制32的最小系統,用來參加電設比賽的,感覺用不上RTC的功能。請問可以把32.768K的晶振部分去掉,當作普通IO口使用嗎?
答:是的,不過32.768K晶振那兩個腳當GPIO用的話,驅動能力會比其它的弱,具體的看手冊上有具體說明。
16、做最小系統版的時候晶振布在底層是否會有影響?
答:放在底層或者頂層沒什么影響,但是晶振最好靠近芯片,晶振下面也最好不要走線。
17、疑問?對于PCLK1是高速時鐘,手冊高速我們是不能超過36M,如果配置他為系統時鐘,會有哪些影響。我有一份代碼一直都是按照系統時鐘運行的,所以,我也不清楚會造成什么問題?
答:系統時鐘是HCLK,不是PCLK1,PCLK1是無法設置為系統時鐘的。
18、最近開始畫原理圖,首先就是最小系統啦,參考戰(zhàn)艦開發(fā)板、某火開發(fā)板、官方的硬件開發(fā)使用入門的外部晶振電路,都各不相同,又看了ST的晶體振蕩器電路設計指南,還是有些不懂啊。我的理解是調整兩個外部電容,使之與晶振的負載電容相等,看看戰(zhàn)艦板上是22pF,難道8M晶振的負載電容是10pF?還有并聯1M的電阻起什么作用呢?不加限流電阻是因為晶振功耗低?
答:因為每一種晶振都有各自的特性,所以最好按制造廠商所提供的數值選擇外部元器件。
?、僭谠S可范圍內,C1,C2值越低越好。C值偏大雖有利于振蕩器的穩(wěn)定,但將會增加起振時間。
?、诠ぷ髁己玫恼袷幉ㄐ螒撌且粋€漂亮的正弦波,峰峰值應該大于電源電壓的70%。
若峰峰值小于70%,可適當減小OSCI及OSCO管腳上的外接負載電容。
反之,若峰峰值接近電源電壓且振蕩波形發(fā)生畸變,則可適當增加負載電容。
例子:若取中心值15pF,則C1,C2各取30pF可得到其串聯等效電容值15pF,這個值與晶振內部等效電容接近最好。
如果要達到8pF(內部電容的),則要選擇外部兩個電容為15pF。
通常廠家建議的外接負載電容為10~30pF左右。并且C1,C2使用瓷片電容為佳。
③用示波器檢測OSCI(Oscillator input)管腳,容易導致振蕩器停振,原因是:部分的探頭阻抗小不可以直接測試,可以用串電容的方法來進行測試。
?、墚敳ㄐ纬霈F削峰,畸變時,可增加負載電阻調整(幾十K到幾百K)。要穩(wěn)定波形是并聯一個1M左右的反饋電阻,電阻使穩(wěn)定,并加速晶振起振時間。