SAME54-有關SmartEEPROM操作
|
||||
---|---|---|---|---|
資深會員
|
我測試
csp_apps_sam_d5x_e5x\apps\nvmctrl\nvmctrl_smarteeprom 在MHC設定smarteeprom size的地方,這個說明看不出哪一欄要設定什麼東西吧...? MHC 查了datasheet,看到下面的說明: DataSheet The SBLK bits indicate the number of blocks allocated per SmartEEPROM virtual sector. The SmartEEPROM virtual page size (PSZ bits). This configuration is loaded after a reset into SEESTAT.PSZ bits. 看起來MHC的兩欄指的是SEESTAT.PSZ(上欄) 與SEESTAT.SBLK(下)? 然後SEESTAT.SBLK選0表示4,選1表示8,...,是這樣? DataSheet那張圖應該要怎麼解釋? 以範例中的1,3為例的話,表示有1個page,1個sector有32個block,此時SmartEEPROM size為4096(Bytes)? 這裡面的page、sector及block間是什麼關係?怎麼組合出4096這個size的? MHC的NVMCTRL裡好像沒有SmartEEPROM 的enable選項,所以這是個預設開啟的功能,不想使用的話就把SEESTAT.PSZ與SEESTAT.SBLK都設成0,是這個意思嗎?
發表於: 2021/5/26 15:14
|
|||
|
有關Watchdog設定
|
||||
---|---|---|---|---|
資深會員
|
我測試Watchdog時,發現在Configuration Bits中與MHC的system->Device&Project Configuration中都可以設定值
請問在這兩個地方設定有什麼不同的地方嗎? 如果兩邊的值不一樣,最後會用哪邊的值? Configuration Bits MHC
發表於: 2021/5/26 14:19
|
|||
|
Re: 請教SAME54,EVSYS設定
|
||||
---|---|---|---|---|
資深會員
|
感謝提示,看到設定的地方了。
這個設定方式最好能加個說明在Event System Configuration畫面中,我在 範例說明 及 csp說明網頁 都沒有看到 (還有中國版裡的MPLAB Harmony之基础篇(22) - 如何通过EVENT SYSTEM和DMA 实现无CPU参与的ADC连续采样.pdf) 要靠自己找到設定方式難度頗高啊
發表於: 2021/5/26 8:36
|
|||
|
請教SAME54,EVSYS設定
|
||||
---|---|---|---|---|
資深會員
|
我試用範例:
csp_apps_sam_d5x_e5x\apps\evsys\evsys_trigger\firmware\sam_e54_xpro.X 他的功能是按下SW0後,toggle LED0 (PC18) 從MHC中,我看到 設定畫面一 設定畫面二 從畫面一中我看到EIC_EXINT_15,這個我知道它是SW0(由圖二), 但PORT_EV_0為什麼可以對應到PC18? 我在專案中搜尋只看到
#define EVENT_ID_USER_PORT_EV_0 1 /**< ID for PORT event user EV_0 */
請問PORT_EV_0對應到PC18 (LED 0)應該要從哪裡看? Toggle這個動作是在哪邊定義的?
發表於: 2021/5/25 15:02
|
|||
|
Re: SAME54 - 請教測量外部輸入的方波頻率
|
||||
---|---|---|---|---|
資深會員
|
呃,感謝回應啦
抓pulse我以前在PIC18F67K22上面做過啦,以前就是在INT遞增去數pulse,然後每秒拿出來看數了幾次 現在是因為程式裡要做的事比較多,想說看看是不是MCU自己有提供什麼比較方便的功能可以做到 (理論上要數的頻率也不高,應該也是用INT自己遞增一下counter就行了) 我第一次用Atmel的chip做產品,以前都是用PIC的,兩個功能不太一樣,想說看有沒有人知道MCU有什麼內建的功能可以做這個
發表於: 2021/5/25 10:32
|
|||
|
SAME54 - 請教測量外部輸入的方波頻率
|
||||
---|---|---|---|---|
資深會員
|
我想從外部輸入方波,頻率大概在2K Hz以下
大概500ms取一次頻率值 以前使用PIC18時Timer中有像是T0CKI,參考 (或是直接找可當INT的pin來輸入,再用Timer定時取值) 但在SAME54的Timer中沒有看到類似的腳,參考 請問SAME54有類似的功能嗎?我試著用Timer的Capture範例接信號產生器,值有些誤差,輸入800Hz時值會差到5Hz左右,且沒有信號時因不會觸發中斷,就沒辦法持續測量 請問在SAME54上要量pulse頻率一般是用什麼來做?
發表於: 2021/5/25 8:37
|
|||
|
Re: Harmony V3 - FreeRTOS Sercom RingBuffer Mode錯誤
|
||||
---|---|---|---|---|
資深會員
|
感謝提示
我再試了一次,先加入Driver再右鍵加入sercom5,的確設定值就被固定在non-blocking mode了 在freeRTOS範例中: HarmonyV3\core_apps_sam_d5x_e5x\apps\rtos\freertos\basic_freertos\firmware\sam_e54_xpro.X 這個範例的MHC設定值 看起來連driver都沒加,就直接用了sercom2 + ring buffer 找了些說明,裡面看起來也是配合driver使用,這個範例可能有點偷懶? 為什麼使用driver時會鎖定使用non-blocking mode?這樣在操作上比較方便嗎?還是只是因為這個功能還沒被支援? Harmony產生的driver在code裡幾乎沒有說明,找範例又常出現這種讓人困惑的內容,讓人不知道用哪種模式較好 主要還是說明文件實在太少,感覺討論也不太熱烈好像用的人不多,遇到問題找不到答案有種孤兒的感覺... 再提一下論壇裡不支援上傳圖片嗎?這樣用google drive發以後檔移掉就看不見啦
發表於: 2021/5/6 15:41
|
|||
|
Harmony V3 - FreeRTOS Sercom RingBuffer Mode錯誤
|
||||
---|---|---|---|---|
資深會員
|
MPLAB 5.45
Harmony V3,core, csp都是3.9.0 (Local Packages中所有項目都已更新目前最新版) 使用sam e54 xplained Pro Evaluation Kit 我試著用Harmony V3新建專案,然後使加入FreeRTOS, Sercom 5,並選擇RingBuffer Mode Generate Code後按Compile就直接出現錯誤訊息 MHC設定 Compile錯誤訊息 看起來是plib_sercom5_usart.c沒有產生對應的driver function,DRV_USART_PLIB_INTERFACE中要用時發生錯誤 這個問題去年我在測試的時候便發現了,到了現在還是一樣的問題… 且SERCOM的Operation Mode若只有plib時,似乎會被鎖住(變灰色)不能設定?此時若再拉進FreeRTOS組件,仍會鎖住,必須把MHC關掉重開才會變成可以設定 (但開啟下面範例並沒有這個現象: \HarmonyV3\csp_apps_sam_d5x_e5x\apps\sercom\usart\usart_ring_buffer_interrupt\firmware\sam_e54_xpro.X) 我不太確定這個規則是什麼,也許在FreeRTOS下只支援某種Operation Mode,所以其它選項會發生錯誤? 請問在FreeRTOS中使用SERCOM,有什麼建議的設定方式嗎?
發表於: 2021/5/5 15:25
|
|||
|
Re: SAME54 Bootloader範例請教
|
||||
---|---|---|---|---|
資深會員
|
感謝提示,
我搜尋時也看到這篇,有提到可以使用MPLAB IPE來產生(如附檔) 我試了一下,除了.bin檔外,也產生了一個.pm3檔案,不知功能為何 所以在compiler選項中新增
${MP_CC_DIR}/xc32-objcopy -I ihex -O binary ${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.hex ${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.bin
就每次compile完會自動新增bin檔的樣子,應該是比較方便些 我想知道bin檔裡的內容是怎麼定義的,如hex檔中有:
:1010000014EF09F0FF00FF005982FACF03F0FBCF85
表示起始位址0x1000,資料長度16位,類型為data .bin檔的內容是怎麼mapping到program memory的?是否有相關的說明? (.bin檔是否只是把hex中每一行的data段轉為binary後連在一起?) 因我從範例程式看起來,bin檔讀出後完全沒有處理就直接用NVMCTRL_PageWrite寫入了,addr都必須自己計算(bootloader必須寫死app起始位址而非從hex檔中讀出每行的位址) 請教一下基礎概念: .SAME54每個指令的長度(1 instruction = ? Bytes) .Program memory及hex檔在顯示時,每一行為16 Bytes (Hex的Data部份),hex檔中的每一行是幾個instruction? .PC在前進時,每次應該是前進1個instruction?(若沒有jump的話) 有沒有專門解釋相關概念的說明? 其實我目前只是想知道,bootloader中每次燒錄512Bytes,是否裡面固定包含512 / 16 = 32行Hex?
case BOOTLOADER_READ_FILE:
void bootloader_NVMPageWrite(uint8_t* data)
發表於: 2021/5/4 12:13
|
|||
|