為什麼串列埠傳輸STM32取樣資料,週期資料太少

2022-05-27 18:43:31 字數 2572 閱讀 2195

1樓:

你乙個點的資料量是多少,幾個位元組。有沒有從理論上算過你這個波特率能不能支撐800包@20ms?

按115200波特率,在20ms內撐死只能傳輸230個位元組……

2樓:匿名使用者

估計是你的編寫**不對,估計你是採乙個點就串列埠通訊一次。雖然理論上成立,但是實際上中斷響應不過來。一般處理方法就是採完乙個週期,串列埠輸出乙個週期的點數。

或者用個陣列儲存完所需要的幾個週期點數之後再一起串列埠傳送。如果在時效性上還不滿足要求,那就需要別的方式進行通訊了,比如spi等

3樓:匿名使用者

也有人回答了,按115200波特率,,1個位元組8位加起始位與停止位共10位,在20ms內撐死只能傳輸230個位元組,所以理論上你最多也就輸出230個點,但cpu處理命令也要時間噠,你收集到資料然後響應中斷,在進入中斷呼叫串列埠傳送函式,這期間也是會消耗一定時間的,如果你取樣乙個資料就進一次中斷,中斷在傳送串列埠,那中斷裡面肯定還沒執行完中斷訊號又來了,這樣肯定是不行了。解決方法:提高波特率至少40k,使用dma來搬運資料,dac取樣到資料就搬運到串列埠,這樣可以極大減少cpu的干預,利用dma模組來完成工作

4樓:

在他150年的歷史中,保守和封閉的戰略讓諾基亞多次瀕於破產邊界,但聚焦與併購的戰略也讓他屢屢化險為夷,重回巔峰。

為什麼stm32串列埠接收資料時第乙個數都是0,從第二個以後才是有效的資料呢? 10

5樓:匿名使用者

那是起始位,每次用串列埠通訊時都會這樣先傳送『0』,然後緊接著傳送資料位然後就是奇偶校驗位最後是停止位

6樓:匿名使用者

我剛剛調通了,解決了問題

中斷接收函式丟了這個判斷

if(usart_getitstatus(usart1, usart_it_rxne) != reset) //判斷讀暫存器是否非空

7樓:斯豪

請問你搞定了沒?我現在也遇到了這個問題,第二位開始才是有效資料,然後最後一位資料就沒有了

關於stm32串列埠使用dma接收資料的問題

8樓:匿名使用者

usart_dmacmd(usart2,usart_dmareq_tx,enable); //使能串列埠2的dma傳送

/*等待dma傳輸完成,實際應用中,傳輸資料期間,可以執行另外的任務 */

while(1)

看不到你寫的程式 給你個dma中斷提示

stm32中串列埠一次最多能接受幾位資料? 一直弄不明白上位機為什麼傳送一串字串給下位機都能收到,

9樓:

串列埠都是一次接一組資料,具體是幾位要看你設定的比如9600 n,8,1那樣是8個資料位,1個起始位,1個停止位(起始和停止位是晶元接收部分自己判斷的)

之所以發一組都能收到是因為stm32(其實51也一樣的,不信你可以試試)執行速度要遠大於串列埠傳送資料的速度。比如9600波特率,就是1秒鐘發9600個位(bit)這樣按n,8,1算的話是10個位(bit)是1個位元組(加起始和停止位,還有8個資料位)也就是1秒鐘傳送960個8位資料。1/960=0.

00104秒(1.04ms)傳送乙個位元組 而微控制器執行指令週期都是以us為單位的。換算下來就是也是1040us了 按51微控制器1us執行乙個指令的話,接受乙個位元組的過程中,晶元可以執行1040個指令,完全可以運算處理完成在傳送回去.

更何況是速度更高的stm32 1.25mps的處理速度

接收乙個位元組資料的時間,夠他完成n個複雜的運算處理。

stm32 串列埠為什麼只能接收傳送的部分資料

10樓:匿名使用者

程式bug,或者接受緩衝的陣列變數滿了,不過基本上可以確定是程式問題

11樓:匿名使用者

這個跟stm32沒有關係,跟你的程式有關係。

stm32的dma串列埠迴圈模式如何設定傳送週期?

12樓:匿名使用者

定時傳送資料建議設定成normal模式。

以下是個人對circular模式和normal模式的理解:

circular:開發者只需設定好傳送緩衝區的大小,之後往緩衝區內扔資料,不必考慮傳送的時機和因為串列埠速度問題導致的資料衝突,相當於「流」的效果。

所以你可以在30ms定時器中斷中單次傳送資料(因為只是往暫存器寫資料,占用不了太多時間)。下面是我的單次傳送的函式:

stm32初學者求助!串列埠問題:如何用串列埠2接收資料,然後再由串列埠1傳送出去? 30

13樓:匿名使用者

最簡單就建個陣列當緩衝區,串列埠2中斷接收,串列埠1判斷緩衝區只要有資料就傳送,傳送時計數器或指標移位的過程最好遮蔽中斷。

14樓:匿名使用者

中斷,串列埠2接收乙個,串列埠1 傳送乙個

15樓:

這個不都一樣麼。程式都可控啊。

為什麼我的ST3TIGER SCSI Controller有

愛卡 應該是安裝了虛擬光碟機後出現的,如果系統裡有虛擬光碟機可將其解除安裝,並在所有已安裝的程式裡找下是否有daemontool,如果有的話,安裝過程中會自動安裝上虛擬光碟機,解除安裝後重啟。另外一種方式就是在這個st3tiger scsi controller裝置上點右鍵選擇解除安裝後重啟看能不能...

U盤速度為什麼忽快忽慢,U盤為什麼傳輸速度一開始很快過了一會就很慢了

sandisk u盤的bai du質量還是很不錯的。1 sandisk的u盤有多種型號,你 zhi購買的是dao什麼?版是否是 按照你所描 權述的,應該是sandisk的普通u盤。行貨sandisk u盤都是有 防偽的,請注意查證。2 你使用什麼軟體測試的?測試u盤最好使用專用的軟體,如atto d...

為什麼固態硬碟傳輸只有150MS

因為你的來主機板不支援sata3.0 或者你沒有把自硬碟接到sata3.0介面bai上。du所以zhi只有150m介面速度。映泰h77是支援sata3.0 但是不是所dao有的介面都是sata3.0的。換個顏色不一樣的sata硬碟介面,就可以了。理論的最大速度只是在大塊檔案複製的情況下才有。為什麼我...