我在SPI主模式下使用PIC 18F46K22與ADC芯片進行通信。 FOSC頻率爲64MHz(帶PLL的外部16MHz晶振),所以根據PIC手冊,最大SPI速度應爲FOSC/4 = 16MHz。但是當我使用SPI發送8位數據時,大約需要發送1.6us。這意味着SPI的速度只有5MHz左右。我的編譯器是MicroC PRO for PIC,我已經使用SPI庫函數來通過SPI初始化和讀取數據。任何人都可以幫我解決這個問題嗎?PIC 18F46K22 SPI速度
這是我如何初始化SPI1:
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_END, _SPI_CLK_IDLE_HIGH, _SPI_HIGH_2_LOW);
和這些是代碼行經由SPI來讀取數據:
Take1 = SPI1_Read(0); // MSB of ADC shift register
Take2 = SPI1_Read(0);
Take3 = SPI1_Read(0); // LSB of ADC shift register
我用外部晶體(HS振盪器)。我在MikroC PRO sotfware的「Edit Project」部分做了相應的設置(振盪器選擇:HS振盪器(高功率> 16 MHz),4X PLL使能:啓用)。
嗨,歡迎來到StackOverflow。如果您可以發佈您用來初始化和讀取SPI數據的代碼(即使您只是調用庫中的函數),這將會很有幫助。當我們看不到您所做的事情時,很難排除故障。看看你是如何初始化你的振盪器也是有用的。 – 2015-03-31 17:15:26
你對晶體有什麼價值的負載電容?你如何測量1.6us的時間間隔?你有沒有嘗試過使用帶有PLL的內部16MHz HFINTOSC而不是外部晶振? – 2015-04-02 12:37:22