Re: 關於MHC中的USART Driver
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
我再試了一下,原來是裡面有兩個SERCOM,我只改了其中一個,改錯地方了...
不好意思搞錯啦
發表於: 2021/12/15 17:50
|
|||
|
Re: 關於MHC中的USART Driver
|
||||
---|---|---|---|---|
管理員
![]() ![]() ![]() |
Driver 可以讀取一個Byte沒有問題, 在SAM2002課程的USART Driver範例就是讀一個Byte.
DRV_USART_ReadBuffer() 線上文件 https://microchip-mplab-harmony.github ... =topic&frmfile=00579.html 我在SAME54-XPlained Pro上測試同一個Demo也可以改成 1 byte沒問題 ![]()
發表於: 2021/12/15 16:00
|
|||
|
關於MHC中的USART Driver
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
新的專案中,我打算使用FreeRTOS,想試試看整合Cellular操作來控制通訊模組
Uart的操作,我原本只用PLib操作,裡面有RingBuffer且可以一次一個Byte讀取 但在FreeRTOS的Cellular套件裡,裡面的控制是用handler,所以我試了一下Driver的範例: \core_apps_sam_d5x_e5x\apps\driver\usart\sync\usart_multi_instance 這個範例預設是有使用DMA,跑起來之後DRV_USART_ReadBuffer(...)必須一次輸入10個bytes才會開始處理
if (DRV_USART_ReadBuffer( appUsartDebugPortData.usartHandle, appUsartDebugPortData.receiveBuffer, APP_DEBUG_PORT_LOOPBACK_DATA_SIZE) == true)
我把裡面的APP_DEBUG_PORT_LOOPBACK_DATA_SIZE值(原為10)改掉,但並沒有什麼作用,仍然必須收滿10Bytes才會往下跑,把DMA關掉再試也是一樣 請問USART的Driver有辦法接收不定長度的資料嗎?至少要可以每次收1個Byte進來,才有機會自己組合字串 之前測試Driver就是遇到這個問題所以才改用PLib,如果只能收固定長度的話,那這個driver好像一點用都沒有... 我目前主要的問題是(若想自己實作控制流程,不靠cellular lib),通訊模組除了送CMD會回ACK之外,還會不定時自己丟一些事件(URC)訊息出來,所以我沒辦法完全改成同步式的操作,比如說我想發個簡訊(程式我隨便寫的,表示一下流程而已):
void SendSMS(char *msg)
依RTOS的設計方式,應該是發個訊息,然後直接等待ACK,收到ACK後再決定下一步的動作,這樣就不用寫一大串的狀態機流程 但實際用起來, - Uart的driver會限制我一次要收的資料長度 - 模組會不定時丟出事件訊息,即使資料收到了也不完全可用 請問對於上面兩個問題,請問各位先進有沒有什麼建議?
發表於: 2021/12/15 12:47
|
|||
|