Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Graphics and Gaming
    • High Performance Computing
    • Innovation
    • Multimedia
    • Open Source Software and Platforms
    • Physical
    • Processors
    • Security
    • System
    • Software Tools
    • TrustZone for Armv8-M
    • 中文社区
  • Blog
    • Artificial Intelligence
    • Automotive
    • Healthcare
    • HPC
    • Infrastructure
    • Innovation
    • Internet of Things
    • Machine Learning
    • Mobile
    • Smart Homes
    • Wearables
  • Forums
    • All developer forums
    • IP Product forums
    • Tool & Software forums
    • Pelion IoT Platform
  • Activity
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • More
  • Cancel
中文社区
中文社区
中文社区博客 [Cypress PSoC BLE套件經驗分享] 開箱試用心得,以及實作記錄與分享
  • Blogs
  • Forum
  • 视频和文件
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
  • New
中文社区 requires membership for participation - click to join
More blogs in 中文社区
  • ARM中国大学计划博客

  • Arm新闻

  • 中文mbed博客

  • 中文社区博客

  • 恩智浦汽车电子MCU讨论区博客

 

Tags
  • Tool
  • Cortex-M0
  • chinese
  • Arm
  • ble套件经验分享]
  • psoc4-ble
  • 中文
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

[Cypress PSoC BLE套件經驗分享] 開箱試用心得,以及實作記錄與分享

Jeremy Hsiao
Jeremy Hsiao
August 18, 2015

(1) 開箱試用心得

與其他相似規格的BLE系統板相比,此套件具有以下強項:

  • 包裝精美且保護良好,價格優惠內容完整
  • 開發與除錯環境容易使用,範例程式與說明檔內容完整,非常容易瀏覽與試驗
  • 特別是"100 Projects in 100 Days with PSoC 4 BLE",以非常實際的案例,來帶領使用者快速熟悉BLE的各種應用實作基礎

特別值得一提的是,從開箱到完成Pioneer Kit Guide的嘗鮮過程,整個使用者體驗是非常完整流暢的:


  • 開箱後的Quick Start,依照說明很快就能完成第一次安裝試用,而且確認系統正常運作
  • 接著是”Pioneer Kit Guide”的實作,讓使用者將整個Base board跟BLE board的主要支持的功能,快速流暢而完整的操作學習
  • 套件包含線材與鈕扣電池,就可以直接進行實驗,不需花費額外的時間去找尋取得,非常的貼心。
  • 開發環境設計良好容易使用,特別是BLE的相關設定介面,對初學者來說,是相當容易操作的
  • 好用的CySmart工具:PC端與手機端的CySmart工具,具有強大功能來協助測試BLE,使用者介面卻是非常容易使用,可以很輕易的解讀BLE的相關資訊

總體來說,這套件使用者開發環境設計良好,而整個系統具有強大的功能與彈性,同時適合BLE初學者的入門學習,以及開發者的產品開發。

(2)實作記錄與分享 -- 簡易測試工具: UART to BLE HID-Keyboard說明

因為測試需求,最近急需有個BLE HID-Keyboard功能的系統,來做為測試工具。系統方塊圖計畫如下:

  • 此BLE HID-Keyboard系統,從UART從PC端的Terminal接收字元
  • 然後系統透過BLE的HID Over GATT Profile (HOGP),傳遞至待測系統DUT

正好可以使用這個題目,來進一步熟悉Cypress PSoC BLE套件。所以就規劃以下幾個小型實作步驟,來逐步完成所有開發的工作。

  1. UART的接收與傳送
  2. BLE的HOGP
  3. 將兩者整合


實作1: USB-UART-Bridge功能

在”Pioneer Kit Guide”中,提到PSoC board原本就具有UART的功能,以及相關的pin腳。所以在這個實作,目的是要確認PC端的Terminal可以與PSoC端,順利的接收與傳送字元。

(1)開啟新專案

HID_1.jpg

然後就可以看到目前系統只有幾個基本的功能模組,其中有UART的功能模組 。

HID_2.jpg

針對UART模組,可以很容易的完成Serial Port參數的設定。

CY_UART_3CY_UART_4

然後使用Build Design,編譯完成後,就會產生許多程式碼,這時候打開main.c,在裡面加入呼叫UART的字元讀寫函數:UART_UartGetChar()以及UART_UartPutChar()。之後再次Build Design,然後燒錄程式。

CY_UART_5

接下來記得在PC端設定Terminal的UART設定值,其中針對New-line的部分修改,這樣Terminal收到ENTER鍵的時候,呈現的行為就會是我們習慣的換行行為(CR/LF)。

CY_UART_6

最後,將版子的Pin腳完成連接,將P1.4接P12.7,以及P1.5接P12.6。

CY_UART_8

完成所有設置後就大功告成,可以在Terminal看到自己輸入的字元。

CY_UART_7

實作2: BLE HID-Keyboard的範例程式

首先搜尋適當的範例程式,然後按下"Create New Workspace"將整個範例載入:

HID_1

載入後可以看到除了BLE除了HID的部分,還有Battery Service以及電量偵測的ADC,另外系統還有使用UART,WatchDog Timer,LED以及SW2。現在不需做任何修正,只要記得有這些機制,方便接下來可以用來理解程式與系統運作。

HID_2

以下是BLE HID-Keyboard的設定,可以用來學習熟悉BLE相關設定,不需要做修改,或者可以嘗試修改GAP Settings中的Device Name。

HID_3HID_4

接下來就可以Build Design以及Program,然後就利用iPad來做實驗,看看範例程式執行的情形。首先打開iPad的藍芽後,就可以看到BLE Keyboard出現在裝置的列表中,點擊之後就會出現配對要求:

HID_5

完成配對之後打開"備忘錄"APP,就會看到自動依序輸入英文字母與數字後換行。如果使用者壓下SW2,就等於是壓下"Caps Lock",而這時候LED燈會就變成藍色:

HID_6

同時可以看到系統透過UART,輸出系統程式安插的各種訊息:

HID_7

至於Battery Service的數值,可以透過CySmart Dongle在PC讀取,或者是CySmart APP在智能手機或平板上來讀取:

HID_8

同時我們可以使用CySmart USB Dongle,配合PC端的CySmart應用程式來讀取HOGP中HID的keyboard report內容。只要在CySmart應用程式中,依序"Start Scan"–>"Connect" BLE Keyboard,然後"Discover All Attributes","Pair","Enable All Notifications",就可以看到Report的內容。

HID_9

可以看到內容為8個byte,程式定期改變其中一個byte的內容,關於Report的具體內容格式,請參考HID的相關規範。

實作3: 將UART的輸入功能,整合到BLE HID-Keyboard的範例程式

經過前面兩個實作後,現在就有充分的信心來完成最後的整合。首先就將UART_UartGetChar()以及UART_UartPutChar()建立function call,然後在主程式中呼叫此function call。

INT_1

實驗結果卻發現在Terminal的按鍵輸入,常常會收不到回應,跟實作一的結果不同。

這時候想到在實作二中,程式使用到WatchDog Timer,來讓系統在BLE運作之間的等待時刻,能進入Deep Sleep Mode後被喚醒,因此猜想是這個部分影響了UART的接收。所以在以下的程式片段做了修改,避免系統進入Deep Sleep Mode而影響了UART的接收,之後UART就能正常接收與回應。

INT_2

接下來,因為UART收到的ASCII字元碼,與HID Report的Key Code不相同,所以需要做轉換後,才能給HID report使用。我的作法是透過建立一個Look-up-table,

INT_3

然後在SimulateKeyboard()中,依照ASCII碼來索引取得HID Key Report所需要的數值。

INT_4

完成修改後再次進行測試,這時候就可以從PC端的Terminal輸入字元,而在iPad看到所輸入的字元。

INT_6

大功告成了嗎?還有一些細節可以改善…

在先前的測試,應該很容易就發現一個大問題,就是按鍵的反應太慢,無法滿足快速輸入的test case。這部分是因為Watch Dog Timer設定是100ms中斷一次,每次中斷後,才會去執行到SimulateKeyboard()。所以最快速的解決方法,就是修改Watch Dog Timer的Timeout數值,讓中斷的周期時間縮短。

INT_5

當然可以預期這樣子修改,相對會造成其他有參考到此timer的功能的時序改變,例如LED閃燈變快,Battery Service的更新週期改變…等。

程式如何修改才是最佳的作法,以及對於BLE運作的影響,還有power consumption的影響程度,這是後續可以進一步探討的的課題。

Anonymous
中文社区博客
  • 中文社区博客: Streamline中基于统计的性能分析功能介绍

    章政
    章政
    原文参考 ARM性能分析器(Streamline) 7.0版开始支持基于SPE(统计性能分析扩展)的性能分析。SPE是Armv8.2-A架构中的一个可选扩展特性,它可以以很低的代价对处理器的流水线进行采样。Streamline可以从Arm Development Studio和Arm Mobile Stuido获取。 为什么需要SPE? Streamline前序版本只能通过硬件计数器和软中断中采样PC信息获取CPU的信息…
    • January 28, 2020
  • 中文社区博客: 让数值算法在Arm edge端跑的更快

    章政
    章政
    CMSIS DSP 库作为高度优化的嵌入式系统数字信号计算库一直以来深受广大开发者所喜爱,随着人工智能(Artificial Intelligence )逐步向Edge端扩展,Edge端的数字计算负载也越来越大,为了缓解计算的压力,各种框架也在Edge端采用CMSIS DSP库进行优化加速。科学计算环境和嵌入式开发环境有很大的区别,比如科学计算往往采用Python,SCIPy,Matlab,而这些环境一般是无法在低功耗嵌入式环境…
    • November 13, 2019
  • 中文社区博客: 使用Arm Mobile Studio加速Mali GPU分析

    章政
    章政
    Streamline性能分析器是一个基于采样的分析器,可以提供有关设备中存在的Arm CPU和Mali GPU的详细性能信息。最新版本的Streamline包含一组预定义模板,可用于方便选择要使用的数据源,并控制它们的显示方式。最新版本的Streamline包含在  Arm Mobile Studio  2019.0和  Arm Development Studio  2019.0中,它包含对Mali
    • May 31, 2019