背景:匿名上位機功能強大,這裡想要採用匿名上位機輸出一些除錯資訊,以波形的形式顯示,方便觀察和除錯。
平台:硬體:stm32f405rgt6
通訊:2.4g zigbee無線串列埠收發模組 cc2530
軟體:匿名上位機v6
數傳模組操作簡介:
配置 **:(注意以下**中不包含中斷優先順序的配置,個人習慣將所有nvic的配置寫在乙個單獨的函式中)
這裡採用uart2 dma傳送的方式 將資料通過數傳傳送給匿名上位機。採用dma傳輸完成中斷,可以實現不定長資料的傳輸。
/* usart2 for debug (ano) */
void vuart2config(void)
}/* uart2 dma send finish interrupt : send debug date (ano) */
void dma1_stream6_irqhandler(void)
}
dma傳送函式:(初始化時不使能dma,當資料準備好之後,根據待傳送的資料長度,設定dma傳送的長度,同時使能dma,啟動一次傳送,當每次dma傳送完成後,在傳輸完成中斷中,關閉dma,等待下一次資料準備好,迴圈以上過程)
/* start once usart2 dma send (for ano) */
static void usart2_ano_dma_send(uint16_t sendsize)
匿名上位機資料打包及迴圈傳送:(使用的是匿名v6版本的上位機,具體協議請參考對應版本的上位機協議,這裡使用匿名上位機提供的使用者資料格式傳送資料,id分別為f1,f2,f3的三組不定長資料)
/* accroding to ano earth station v6 protocol: userdata */
void anosend(void)
sendtoano_buff[senddata_cnt++] = sumcheck;
usart2_ano_dma_send(senddata_cnt);
break;
} /* id2 (f2) send pc data */
case 2:
sendtoano_buff[senddata_cnt++] = sumcheck;
usart2_ano_dma_send(senddata_cnt);
break;
} /* id2 (f3) send test data */
case 3:
sendtoano_buff[senddata_cnt++] = sumcheck;
usart2_ano_dma_send(senddata_cnt);
break;
} }ano_dataid++;
/* choose the return number */
if(ano_test)
} else if(!ano_test) }
}
——cloud over sky
——2020/3/7
stm32與上位機進行串列埠通訊問題
stm32傳送資料給上位機 stm32串列埠傳送資料函式usart senddata 一次只能傳送乙個位元組 8位 不能超過0xff 255 因此大於255的資料需要拆成幾個位元組傳送。函式實現 void send data usart typedef usartx,char s 再在上位機中進行資...
FPGA與STM32 模擬32位SPI通訊(二)
1 下午又繼續實驗,發現fpga不輸出資料了,但是sck訊號還有,情況比上午還糟,用signaltap 了一陣也沒有結果,後來發現是杜邦線松了。教訓是以後接線時鬆的線務必不要將就,尤其是在接比較密集的杜邦線,線鬆動了會很難排查,熟悉了signaltap的 但仿不出全部的32個sck訊號,取樣率設到6...
SIM908和STM32資料上傳到上位機
最近做gprs,開始什麼都不懂,摸索了近乙個月吧,現在網路基本搭建好了。把經驗給大家分享下,歡迎多提意見。有必要說下,我不是專業搞網路的,只是需要這些臨時學習的,有很多用語只是為了方便理解。不恰當之處請見諒。我的目標是,用stm32 採集資料,gprs將資料上傳至上位機。一 選型。個人覺得都差不多,...