• 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: Harmony USART Driver對MAX485傳收的方向控制問題
#2
管理員
管理員


查看用戶資訊
由於選用了 Asynchronous USART Driver, 因此一旦Submit transfer task後App即可馬上做其他事, 但真正的Transfer就必須等到Driver處裡到Queue中的Transfer Request才會發生, 唯一可以攔截Rx/Tx的Driver Transfer Callback卻都是在完成後才會Callback.
如果因為傳送或是接受前需要"同步"做的一些事, 那可以選擇Synchronous USART Driver mode, 則每次傳送及接收時都必須等到完成才會往下做, 這樣就可以在下達Read/Write Transfer前, 先控制DE/~RE pin了, 並且在傳送完成後關閉DE/~RE pin

如果要保有Asynchronous USART Driver的Queue排隊方式時, 目前USART Driver沒有可在Rx/Tx發生前可以插入"Callback"的API, 因為Callback是Interrupt發生時才會做的, 時間點不對也就不是Callback.

正確應該是想辦法在Driver Transfer Queue中, 每次處裡要Read/Write request前, 可以正確地插入DE/~Re pin控制的code才是, 那這樣就必須要去改Gen出的code了!

Harmony 沒有規定不能去改他Gen出來的Code, 很多時候是需要去改的, 所以在Gencode時, 才會有Merge User code的選項, 只是如果自己改了code, 就必須要確保加上去的code不會影響Framework的運作.

以下幾點方向可以嘗試看看
1. 因為 SERCOM PLIB已經被USART Driver給全權管理了, 因此絕對不能再去呼叫SERCOM PLIB下的API不然會造成Driver混亂, 比如去呼叫SERCOMx_USART_WriteCallbackRegister()等等,
2. 可以去Driver中尋找Queue的Transfer Request, 何時被抓出來交給SERCOM PLIB執行 Read/Write, 基本上在這個Moment時的動作幾乎是馬上被PLIB執行的, 因此在這時去控制 DE/~RE pin應該不會有問題, Driver中的static function為 _DRV_USART_ReadSubmit() 與 _DRV_USART_WriteSubmit()
3. 由於 Driver全部使用 Function Pointer來進行操作, 所以可以在Driver initialization時, 查出PLIB的Function在Driver中變成什麼樣子, 這樣比較好找到PLIB在哪個地方被Driver給呼叫執行, code改在這裡就比較safe.
const DRV_USART_PLIB_INTERFACE drvUsart0PlibAPI = {
    .
readCallbackRegister = (DRV_USART_PLIB_READ_CALLBACK_REG)SERCOM5_USART_ReadCallbackRegister,
    .
read = (DRV_USART_PLIB_READ)SERCOM5_USART_Read,
    .
readIsBusy = (DRV_USART_PLIB_READ_IS_BUSY)SERCOM5_USART_ReadIsBusy,
    .
readCountGet = (DRV_USART_PLIB_READ_COUNT_GET)SERCOM5_USART_ReadCountGet,
    .
readAbort = (DRV_USART_PLIB_READ_ABORT)SERCOM5_USART_ReadAbort,
    .
writeCallbackRegister = (DRV_USART_PLIB_WRITE_CALLBACK_REG)SERCOM5_USART_WriteCallbackRegister,
    .
write = (DRV_USART_PLIB_WRITE)SERCOM5_USART_Write,
    .
writeIsBusy = (DRV_USART_PLIB_WRITE_IS_BUSY)SERCOM5_USART_WriteIsBusy,
    .
writeCountGet = (DRV_USART_PLIB_WRITE_COUNT_GET)SERCOM5_USART_WriteCountGet,
    .
errorGet = (DRV_USART_PLIB_ERROR_GET)SERCOM5_USART_ErrorGet,
    .
serialSetup = (DRV_USART_PLIB_SERIAL_SETUP)SERCOM5_USART_SerialSetup
};

發表於: 2021/9/14 8:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Harmony USART Driver對MAX485傳收的方向控制問題
#1
中級會員
中級會員


查看用戶資訊
目前正在做USART與MAX485互傳資料,來實現RS485通訊介面
但遇到一個問題是,MAX485需要控制DE和RE pin來配置當前的傳/收狀態,
而若使用USART Driver執行write/read,都是透過add將task丟到queue,
只有完成task後會回到callback,如此將無法正確配置MAX485工作狀態。

請問有什麼方式,能夠配置一DO給driver後,就可以在read/write時自動控制MAX485的傳/收方向?
現在想到的就是進去修改driver層的code或是在add task時同步record是read或write;
在當前task完成進到callback時,為下一task的需求來配置該DO;
但感覺都不是好方法。

以上,麻煩先進指教,謝謝

發表於: 2021/9/13 20:42
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... ]

教育訓練中心

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