• 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: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
#5
中級會員
中級會員


查看用戶資訊
Libra大,
清楚了,如此便利,看來Driver是Harmony必學課題。
未來有不懂再向您請教,謝謝

發表於: 2021/8/27 22:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
#4
管理員
管理員


查看用戶資訊
1. 因為SPI Driver連接SERCOM4一個peripheral,只有instance0,...
Ans: 雖然OLED/SD Card是使用 SPI Driver的同一個 Instance0 (因為是使用同一個PLIB SERCOM-SPI), 但是各自open得到自己的SPI Handle, 因此在執行SPI Read/Write時就會用到這個各自Open得到的Handle, 然後SPI的設置包含速度, bit length, chip select (GPIO), 也都綁定自己的SPI Handle不會搞混
Ex.
OLED :
app_drv_spi1.c 中 的 void LCM_BusWrite() 中才有用到 SPI1Handle
DRV_SPI_WriteTransferAdd( SPI1Handle, bytes, counts, &SPI1WriteHandle );

SD Card (SPI) Driver :
drv_sdspi.c 中 的 _DRV_SDSPI_AttachDetachTasks() 中的 dObj->spiDrvHandle
dObj->spiDrvHandle = DRV_SPI_Open(dObj->spiDrvIndex, DRV_IO_INTENT_READWRITE);


2. 如同我這個應用,恰好兩個Lab的SPI都是1MHz,如果想要uSD跑在10MHz而OLED維持1MHz
Ans: SD Card (SPI) driver 的速度可以在 MHC GUI中指定, 就會在每次對SD Card傳送時切換到這個速度, 其他直接使用SPI Driver的裝置, 則必須得到SPI_Handle之後, 使用DRV_SPI_TransferSetup來給定這個Handle要的傳輸速度及GPIO的CS pin, 給定之後只要輪到這個SPI傳輸時, 就會使用這組速度及Chip Select Pin(GPIO)
DRV_SPI_TRANSFER_SETUP SPI1Setup;
SPI1Setup.baudRateInHz = 1000000;
SPI1Setup.clockPhase = DRV_SPI_CLOCK_PHASE_VALID_LEADING_EDGE;
SPI1Setup.clockPolarity = DRV_SPI_CLOCK_POLARITY_IDLE_LOW;
SPI1Setup.dataBits = DRV_SPI_DATA_BITS_8;
SPI1Setup.chipSelect = (SYS_PORT_PIN)SSD1306_CS_PIN;
SPI1Setup.csPolarity = DRV_SPI_CS_POLARITY_ACTIVE_LOW;
DRV_SPI_TransferSetup(SPI1Handle, &SPI1Setup);


3. 在File system Lab有個步驟是Enable : SPI Driver的Use DMA for Tx and Rx,請問這是SPI與哪個部分在進行DMA,而我們卻不需要改任何code?
Ans: Driver裡面使用DMA與不用DMA只需要開或關即可, Driver會自己Gen出完全不一樣的Code, 但是API卻不用改變, 你有興趣可以把DMA有開跟沒開時, Gen出來的Code進行比較即可知道, 至於哪部分用了DMA, 如果在大量傳送或接收資料時會比較明顯, 比如畫bitmap圖時, 會連續輸出1Kbyte的buffer到SPI bus, 這時候用到DMA來傳送就會有效果

發表於: 2021/8/25 17:39

Edited by Libra on 2021年08月31日 09:04:59
Edited by Libra on 2021年08月31日 09:05:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
#3
中級會員
中級會員


查看用戶資訊
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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
#2
管理員
管理員


查看用戶資訊
如果同一組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
縮圖

Attach file:



jpg  SPI-SDCard.jpg (168.18 KB)
67979_612365225aae0.jpg 571X527 px

jpg  SPI-SDCard-1.jpg (42.55 KB)
67979_61236536b95b3.jpg 382X161 px

發表於: 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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


APP045 v2.00板上uSD & LCD同時跑在SPI Driver上的問題
#1
中級會員
中級會員


查看用戶資訊
小弟目前使用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
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... ]

教育訓練中心

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