• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users






Re: 關於MHC中的USART Driver
#3
資深會員
資深會員


查看用戶資訊
我再試了一下,原來是裡面有兩個SERCOM,我只改了其中一個,改錯地方了...

不好意思搞錯啦

發表於: 2021/12/15 17:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於MHC中的USART Driver
#2
管理員
管理員


查看用戶資訊
Driver 可以讀取一個Byte沒有問題, 在SAM2002課程的USART Driver範例就是讀一個Byte.
DRV_USART_ReadBuffer() 線上文件
https://microchip-mplab-harmony.github ... =topic&frmfile=00579.html

我在SAME54-XPlained Pro上測試同一個Demo也可以改成 1 byte沒問題
縮圖

Attach file:



jpg  SAME54_UART_Loopback.jpg (465.70 KB)
67979_61b9a24edd0e5.jpg 1196X689 px

發表於: 2021/12/15 16:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


關於MHC中的USART Driver
#1
資深會員
資深會員


查看用戶資訊
新的專案中,我打算使用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_ReadBufferappUsartDebugPortData.usartHandleappUsartDebugPortData.receiveBufferAPP_DEBUG_PORT_LOOPBACK_DATA_SIZE) == true)
            {
                
/* Copy receive buffer to transmit buffer */
                
memcpy(appUsartDebugPortData.transmitBufferappUsartDebugPortData.receiveBufferAPP_DEBUG_PORT_LOOPBACK_DATA_SIZE);
            }


我把裡面的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)
{
    
char buf[16];
    
SendUart("AT+CMGF=1");
    
RecvUart(Buf);
    if (
buf=="OK")
    {
        
SendUart("AT+CMGS=");
        
RecvUart(Buf);
    }
}


依RTOS的設計方式,應該是發個訊息,然後直接等待ACK,收到ACK後再決定下一步的動作,這樣就不用寫一大串的狀態機流程

但實際用起來,
- Uart的driver會限制我一次要收的資料長度
- 模組會不定時丟出事件訊息,即使資料收到了也不完全可用


請問對於上面兩個問題,請問各位先進有沒有什麼建議?

發表於: 2021/12/15 12:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------