Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
|
||||
---|---|---|---|---|
中級會員
|
Libra大,
清楚了,如此便利,看來Driver是Harmony必學課題。 未來有不懂再向您請教,謝謝
發表於: 2021/8/27 22:04
|
|||
|
Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
|
||||
---|---|---|---|---|
中級會員
|
Libra 老師,
感謝您詳細的指導,我期望的功能已經達到了, 不過我還有幾個疑問請教 : 1. 因為SPI Driver連接SERCOM4一個peripheral,只有instance0, 所以兩個client在執行"DRV_SPI_Open(DRV_SPI_INDEX_0, DRV_IO_INTENT_WRITE)" Parameter1都是"DRV_SPI_INDEX_0",而不會有"DRV_SPI_INDEX_1"; 這樣兩個client的API state machine進行時,SPI Driver如何分辨CS要選哪一個裝置? 我大概知道跟open時所回傳的handle有關,不過我看了點OLED的code, 寫入data的function都沒有引入handle,難道是各自client完成後,需要把SPI Driver close? 下次要用時,再open? 2. 如同我這個應用,恰好兩個Lab的SPI都是1MHz,如果想要uSD跑在10MHz,而OLED維持1MHz, 使用Driver可以實現運行過程自動變速嗎? 3. 在File system Lab有個步驟是Enable : SPI Driver的Use DMA for Tx and Rx,請問這是SPI與哪個 部分在進行DMA,而我們卻不需要改任何code? 以上,還請指教,謝謝
發表於: 2021/8/25 17:02
|
|||
|
Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
|
||||
---|---|---|---|---|
管理員
|
如果同一組SERCOM有用Driver時, 就不建議再使用PLIB方式來同時控制, 因為Driver會去管理SERCOM PLIB的資源, APP045v2可以實現Driver base的SPI SD Card與OLED,
我的SAM2002課(12 SPI Driver Library)中是使用SPI Driver Based方式來點OLED, 如果要再搭SPI SD Card時, 則請參考(05 FILE System Service -1)使用System Service來實現SD Card的支援, 其中SD Card的部分Lab8原先是使用SERCOM-SPI直接接到SD Card (SPI) Driver來驅動的, 請參考Lab8的Discuss中有提到使用SERCOM-SPI -- SPI Driver -- SD Card (SPI) Driver的方式來驅動SD Card的介紹, 這樣就可以讓SPI OLED與SD card使用同一組SERCOM及SPI Driver, 注意! OLED SPI的Chip Select需要在Driver中使用Transfer Setup來指定GPIO當CS, 但是SD Card Driver是用MHC UI來指定的. 我的課程並沒有這兩個合在一起的Lab但是, 實際的程式我有做出來是沒有問題的, 下圖就是我整合這兩個Lab的結果, UART1printf()因為沒有UART Driver改用SYS_CONSOLE_PRINT()取代! 需要在app_drv_spi1.c 中 #include "system/debug/sys_debug.h" 才能使用. 注意! 因為OLED的Lab是使用Polling的方式在Update state中刷畫面, 如果刷太頻繁時, 會沒有時間給SD Card的state machine來進行操作, 我的測試中加了一段程式讓OLED Update state每200ms進去刷一次即可, 讓其它Driver的state machine有機會來執行比較繁重的工作. 其中因為SPI Driver被兩個API(SD Card/OLED)使用, 所以記得Number of Clients必須設為2
發表於: 2021/8/23 16:36
Edited by Libra on 2021年08月23日 17:03:53
Edited by Libra on 2021年08月23日 17:06:44 Edited by Libra on 2021年08月23日 17:07:07 Edited by Libra on 2021年08月23日 17:07:19 Edited by Libra on 2021年08月23日 17:32:57 Edited by Libra on 2021年08月23日 17:34:34 Edited by Libra on 2021年08月23日 17:36:12 Edited by Libra on 2021年08月23日 17:37:49 Edited by Libra on 2021年08月24日 09:37:32 |
|||
|
APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
|
||||
---|---|---|---|---|
中級會員
|
小弟目前使用APP045 v2.00學習Harmony,同時在執行公司專案
練習CAE SAM2002課程之Lab7&8後,需要OLE LCD(SAM2001 Lab17)功能, 而EVM的這兩個裝置是共用同一個SERCOM 印象中,Libra大曾說過,"多個API對上一個Peripheral,使用Driver是較佳的做法",請問 : 1. 在我現在需求是選用SPI Driver較恰當嗎? 2. 若Q1是肯定的,請問LCD的CS Pin,也是跟uSD_CS共pin嗎? 3. 因Pin count不足,後續還有8個DO的LED會通過一個SPI串列轉並列的IC來驅動,屆時也打算用這組SERCOM, 不過這顆IC並不會有CS Pin,而是藉由latch和enable pin來更新資料,若uSD和LCD用driver來執行,可以同時 用PLIB底層來刻LED的程式嗎? 以上,謝謝
發表於: 2021/8/23 15:38
|
|||
|