簡體   English   中英

使用STM32F3讀取非傳統ADC

[英]Read non conventional ADC with STM32F3

我正在嘗試將STM32F303 Nucleo與AD7748-4 ADC連接。 ADC的數據表:

https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768-7768-4.pdf

問題是,ADC不通過SPI端口輸出轉換后的值,而是使用數據就緒信號(DRDY),數據時鍾(DCLK)和4個數據輸出(DOUT0-DOUT3)的組合。 如果我按照這種方式設置輸出,則輸出通過一條線串行96位,但是在我的應用中時序是至關重要的,我需要使用DOUT0到DOUT2來計時數據,每個輸出32位。 如果我連續流式傳輸數據,我可以欺騙SPI端口讀取它,但我不是。 ADC工作在20MHz,因此DCLK將以相同的頻率工作。 Nucleo最高運行72MHz,但是當使用DAM時,它將時鍾設置為64MHz。

在STM手冊中,它將“GPIO端口輸入數據寄存器(GPIOx_IDR)(x = A..H)”描述為只讀寄存器 - 我的理解是低16位可以存儲最多16位的輸入值(最有可能是內存數據R / W) - 問題是,如何配置GPIO讀入數據? 我在這里有點意外。 我的直覺告訴我,Nucleo可能不夠快,無法讀取來自ADC的數據......有什么想法嗎? 所有用C / C ++編寫的基本上都是裸機...我是Nucleo的新手,4年內沒有編寫代碼 - 請原諒任何知識失誤......

如果DCLK工作在20Mhz,那么uC顯然不夠快(每個周期之間你有大約3個指令,所以即使匯編語言也很難實現......)。 由於我不熟悉stm架構,我只能提出一個技巧,可能會激發你頭腦中的一些想法。 不是使用晶體用於ADC,而是使用STM中連接到輸出引腳的定時器,並使用該引腳(MCLK)為ADC提供時鍾。 使用spi,空閑模式等配置ADC時,可以將此時鍾信號保持在20Mhz。 但是當您需要來自ADC的樣本時,請停止STM定時器並“手動”為ADC提供時鍾。 (實際控制DCLK信號)。 轉換例程結束后,以20Mhz重新啟動計時器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM