顯示具有 uart 標籤的文章。 顯示所有文章
顯示具有 uart 標籤的文章。 顯示所有文章

2015年11月30日 星期一

STM32F4 Usart Polling/Interrupt/DMA Example Code

1. 本範例是使用stm32f4x1 discovery board當做硬體測試平台, 搭配ttl to usb小板與pc之間溝通.

2. stm32f4x1 discovery board上是選用PA2(Tx)及PA3(Rx)這2隻GPIO來當做Usart Tx/Rx, 因此所
    有的範例皆採用這2隻來進行測試.

3. Usart Example Code共有底下4種測試程式, 分別是根據Tx及Rx可以設定的方式排列出來, 由
    於Rx polling mode於實際上非常少用, 所以就不進行測試了.

  • Tx: Polling, Rx: Interrupt.
  • Tx: Interrupt, Rx: Interrupt.
  • Tx: DMA, Rx:Interrupt.
  • Tx: DMA, Rx: DMA

4. PC端的測試工具是使用Putty, baud rate預設是使用921600.



5. 接線方式:
  • stm32f401 discovery board  PA2(Tx)  =>  ttl to usb小板 Rx
  • stm32f401 discovery board  PA3(Rx)  =>  ttl to usb小板 Tx
  • stm32f401 discovery board  GND  =>  ttl to usb小板 GND


6. 範例的呈現方式皆是將鍵盤上輸入的字元原封不動地輸出, 也提供了兩個比對特定字串的範
    例, 如輸入'hello', 會出現'world', 輸入'justin', 會出現'wang', 且支援"Backspace"功能, 當輸入到
    一半時, 發現打錯字, 可以使用"Backspace"來更正輸入字串.



7. 完整範例連結如下:

2015年10月23日 星期五

nRF52832 BLE_App_Uart example code(IAR EWARM Version)

1. 本範例主要是參考Nordic原廠Keil MDK範例中的ble_app_uart project, 將其修改為IAR  
    EWARM的版本, 但在內容上有稍微修改一下, 之後在main.c流程介紹時, 再行說明.

2. 完整範例下載連結:
    ble_app_uart_iar_version

3. 需先下載及安裝相關Tool等前置作業, 本範例才能正常執行:

  • 下載 S132 nRF52 SoftDevice, 主要原因是需要裡面的ble library hex, 否則程式無法正常執行.

  • 下載完畢解壓縮後, 可以看到s132_nrf52_1.0.0-3.alpha_softdevice.hex在資料匣底下.

  • 安裝nRF5x-Tools-Win32, 主要原因是需要裡面的mergehex.exe執行檔, 需要此檔案才能將ble library hex與我們自行產生出的hex打包在一起.


  • 安裝完畢後, 可以在安裝目錄底下找到mergehex.exe.

  • 在下載及安裝完畢後, 需要將s132_nrf52_1.0.0-3.alpha_softdevice.hexmergehex.exe這兩個檔案複製到Projects/Template/EWARM/Debug/Exe底下去, 方便直接將我們自行build出來的hex一起打包.


4. main.c 流程簡介:

  • 跟原先Keil MDK版本的範例相比, 有以下幾點差異:
    • uart baud rate 提升到1000000.
    • 取消uart flow control.(RTS/CTS).

    • 原先範例是PC先透過uart傳送字元給nRF52832, 然後nRF52832再將收到的字元透過BLE傳送出去, 現在改為nRF52832固定每100msec透過BLE送出特定字串出去.


  • 當程式編譯完成後, 在Projects/Template/EWARM/Debug/Exe底下會產生出nRF52832_Template.hex, 代表程式編譯正常, 那接下來就是進行merge hex的動作了.

5. merge hex流程簡介:

  • 當我們完成上述步驟後, 在Projects/Template/EWARM/Debug/Exe底下應該會有如下圖的檔案, 若都有的話, 便可進行merge hex的步驟.
  • 開啟命令提示字元, 且切換到Projects/Template/EWARM/Debug/Exe路徑底下.



  •  輸入: mergehex.exe -h , 便可以得知mergehex.exe的使用方法.



  • 由於我們是要將ble library hex 以及IAR Project產生的hex merge 在一起, 因此我們輸入以下的語法: (bt_uart.hex代表的是merge完成後的檔案)
    mergehex.exe -m s132_nrf52_1.0.0-3.alpha_softdevice.hex nRF52832_Template.hex -o bt_uart.hex

  • merge成功時, 會出現以下訊息, 且Projects/Template/EWARM/Debug/Exe目錄底下會出現bt_uart.hex.





  • 至此merge流程已全部結束, 接下來將把bt_uart.hex燒錄至nRF52832內並進行BLE測試.

6. 燒錄流程:

  • 將nRF52832使用USB Cable與PC連線, 此時會出現JLINK Disk.


  • 開啟資料夾.
  • 將merge完成的bt_uart.hex檔案複製到JLINK Disk, 複製完成後, nRF52832會自動進行燒錄並重啟.


  • 此時應該會看到LED1以間隔1秒左右的速度在閃爍, 表示BLE程式正在等待連線, 代表燒錄流程執行成功.

7. 測試流程:

  • 在手機上安裝nRF UART v2.0(android) or nRF UART(iOS).

  • 接下來使用nRF UART v2.0當作範例測試, 開啟app後, 選擇Connect.


  • 此時選擇Nordic_UART.



  • 連線成功後, 便可以看到main.c中我們所定義的格式輸出, 且LED1停止閃爍.
    sprintf(PrintBuffer, "Hello,Nordic,%d\r\n", counter++);


  • 若再按下Disconnect, 則停止傳送資料, LED1開始恢復閃爍.

8. 完整測試影片如下: