國產藍牙SOC芯片ST17H66的時鍾問題分析


很早就從某國產芯片FAE處聽過這么一句話“畢竟是國產IC”,

一款藍牙產品需要做鬧鍾功能,BOSS測試,一周有5分鍾左右偏差

設計時,沒太在意時鍾問題,想着BLE的時鍾很嚴格,時間不會差的很過分。

直接用系統時鍾做計時器了,1S重復中斷,結果翻車了。

系統16Mhz的晶振,1S的精准計時都做不到,

 

項目進度優先,底層寄存器之類的,完全封閉的,無法“刨根問底”。

燒錄幾個機器,跑下一致性,要數據一致,就直接每3小時快進5秒,控制一周誤差10S內。

 

//定時定義
	osal_start_reload_timer(user_task_id,PMW_LIGHT_TIMER_60S_EVT,1000);	

//中斷處理
    
      f_xx()  {       //實際測量時間,15個小時,差了25秒,和500PPM的理論一致。
            


     //精度測量
     //用硬件Timer測量,2991557  3991602    有 0.2%的誤差
    // 這個應該是最可信的,但是和實際時間對不上,
	LOG("yyyyy--%d %08x\n",  AP_TIM3->CurrentCount-lk, AP_TIM3->CurrentCount); 	lk = AP_TIM3->CurrentCount;;
	
	//這個和實際一致 1598 誤差0.00125左右 
	LOG("yyyyy1--%d\n",  hal_systick()-li);		li  = hal_systick();

       //這個慘不忍睹,33275,33265..   和理論32768誤差能有0.016
	LOG("yyyyy2--%d\n",  rtc_get_counter()-lj); lj = rtc_get_counter();


        //秒計時  
    }    

//

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM