顯示具有 ARM Cortex 標籤的文章。 顯示所有文章
顯示具有 ARM Cortex 標籤的文章。 顯示所有文章

2016年10月15日 星期六

MDK-ARM (Keil uVision) +J-Link 進行開發

MDK-ARM (Keil uVision) +J-Link 進行開發



J-Link是ARM 針對Cortex-M 系列的MCU的Debugger 通用工具, 一般兩種界面,JTAG (5-wire)或SWD(2-wire),

現在大多使用後來的二線的SWD界面, 即SWDCLK及SWDIO, 一個作為clock線一個作為資料線, 類似I2C通訊方式。



J-Link 


From https://www.segger.com/


3.3V 和 GND 可以提供電源給開板子





GND, SWDCLK, SWDIO, 3.3V


Debugger設定使用J-Link 


要先安裝好J-link driver

以下說明針對J-Link SWD 的debug 方式

開啓Keil uVision , 在 Flash->Configure Flash Tools... 中, 選擇 Debug Tag 選擇, 選擇使用J-Link/J-TRACE Cortex, 並進入Setting, 在Adapter 的 port 要選擇SW而非JTAG。若此時有正確連接到Cortex-M板子, SW Device會出現訊息。







實際J-Link接線


(1) 板子電源也由J-link提供



(1) 板子電源另外由USB port 提供, J-Link僅作為SWDebug使用




(3) 接新唐NANO102SC2AN開發板 (Reset不用接)






J-Link OB

目前其實也有很多EVM 板子, 直接就附在板子上了(這樣才方便推廣晶片?!) 如STMFx系列(稱作ST-Link) 或新唐Nuvton 系列 (稱作Nu-Link)

Having a J-Link right on the eval board allows customers to fully use and test the target CPU, providing full debug capabilities. At the same time, the eval board can remain small and inexpensive (J-Link OB on eval board example). All features of the regular J-Link can be used, including download into Flash memory.



From https://www.segger.com/

相關連結:






2016年7月24日 星期日

利用CNY70量測心跳



在經過多次專題實驗後, 決定利用CNY70 紅外線感應器製作紅外線感應電路模組,未來可以很快進行到以心律相關的研究主題。然而光製作一個CNY70紅外線反射模組,離取得心跳還有段距離. 我們整理了要畫出一個心律圖的波形, 從底層韌體、心律訊號演算法的處理,到上層HMI 人機界面, 大概要了解以下主題。

  1. CNY70 心律感測器電路設計
  2. 邏輯分析儀之數位訊號分析
  3. ADC取樣處理
  4. CNY70 心律訊號與演算法分析
  5. Python GUI 圖控介面設計


CNY 70  基本方塊

「CNY70」的圖片搜尋結果

「CNY70」的圖片搜尋結果





參考資料: 

  1. CNY70 DataSheet
  2. 連接MCU 使用ADC
  3. 感測電路應用設計


-----------------------------------------------------------------------------------------------


1) CNY70 結合Raspberry Pi +ESP8266 Wi-Fi 應用 


IoT of heart rate watchdog from 義方 陳

2) 穿戴式裝置 (包含CNY70作為心跳量測)



3)  CNY70心跳量測結合藍芽與2.4GRF(CC2500) 應用





2016年7月5日 星期二

艾鍗ARM MCU Board



艾鍗ARM MCU  實驗套件規格採用的是新唐科技的NANO130低功耗系列晶片





MCU:

  • 新唐 NANO130KE3BN (NANO130低功耗系列晶)
  • ARM® CortexTM-M0 核心最高運行到 42 MHz
  • 128K bytes Flash EPROM Memory
  • 16K bytes SRAM Memory
電源: USB 輸入電源 5V,500mA 自復型保險絲限流保護,系統穩壓 3.3V

燒錄除錯器:  JLink

USB:  

  • 一組 USB 2.0 FS 設備 12Mbps
  • 提供 8 個可程式設計的端點
  • 包含 512 位元組的內部 SRAM 作為 USB 緩衝區

GPIO:

  • 一組 1602 文字型 LCD
  • 一個 4x4 KeyPad 模組
  • on board 輸入按鍵 x1
  • 一組步進馬達及控制器模組

12bits SAR ADC:

  • AD 通道 0:100K 熱敏電阻(on board)
  • AD 通道 1:100K VR(on board)
  • AD 外接通道 x 6

12bits DAC: 2 組 DAC 輸出通道

16bits PWM x8:

  • PWM0-0~2 控制全彩 LED(on board)
  • PWM1_3:Capture mode 紅外線收發模組(on board)

RTC:on board 32.768KHz 石英振盪器
UART:

  • USB 模組 (UART0)
  • ESP8266 WiFi 模組 (UART1)

I2C: BH1750 照度計
SPI: NRF24L01P 2.4G 無線通訊模組


PCB 外觀

NANO130KE3BN規格資料:

• 内核(Core)
- ARM® Cortex™-M0
- 最高運行頻率可達 42 MHz
- 工作電壓:1.8V to 3.6V
- 工作溫度:-40℃ ~ 85℃
• 超低功耗(Ultra-Low power consumption)
- 200 uA/MHz(Normal)
- 75 uA/MHz(Idle)
- 2.5 uA(Power down, RTC on, RAM retention)
- 1 uA (Power down, RAM retention)
- Fast wake-up:less than 7 us
• 記憶體(Memory)
- 32 KB 應用程式Flash
- 內嵌8 KB SRAM
- 可編程Data Flash
- 支援線上系統更新ISP(In-System Programming)
- 支援線上電路更新ICP(In-Circuit Programming)
• 類比轉數位轉換器(ADC)
- 提供12通道
- 12位解析度
- 可達2 MSPS(每秒取樣速率)
- ±1℃ 準確度溫感計



• 脈寬調變(PWM)
- 內建4個16位PWM產生器,可輸出
8 路PWM或4組互補配對PWM
- 捕捉ADC功能
• LCD 控制器
- 4x40 & 6x38 COM/SEG LCD
• 通訊介面(Connectivity)
- USB 2.0全速裝置
- 3 組SPI(可達 32 MHz)
- 2 組I²C(可達 1 MHz)
- 5 組UART(2 組可達 1 Mbps)
- 16/8 位EBI介面
• 時鐘控制(Clock control)
- 外部4 to 24 MHz高速晶振
- 內部12 MHz振盪器(1% 精準度)
- 內部10 kHz振盪器用於低功耗操作

資源連結:

  1. NANO130SC2BN晶片規格
  2. 艾鍗ARM Cortex M0 板電路圖



2016年1月9日 星期六

啓用MDK SEMIHOST的功能



啓用MDK 的SEMIHOST功能, 以進行Debug, 如此使用C標準I/O函式庫的 printf, 就可以在console (UART) 輸出, 方便程式開發與Debug。待功能確認OK後, 再拿掉printf , 因為printf會delay 程式的, 影響到timing的控制。

1.) 於MDK專案中新增 retarget.c

..\..\..\..\Library\StdDriver\src\retarget.c



2) 在選單中, Flash-> "Configure Flash Tools...", 出現底下畫面後,在C/C++頁籤中的Proprocess Symbols 定義 DEBUG_ENABLE_SEMIHOST



3) 程式編譯後, 選擇Debug->Start/Stop debug session來執行程式 。並於工具選單選擇UART#1 輸出


4) 右下角就會看到printf 輸出









2015年12月7日 星期一

GPIO Open Drain?






GPIO 表示此pin可設定為 output 或 input。

GPIO 設為output mode


若設為output 表示此pin有 source或sink 電流的能力 。表示若pin設成High,可以成為電流輸出的來源端(Source); 若pin設成Low,可以成為電流流入的汲端(sink)。

GPIO的邏輯方塊圖 (內部由兩顆電晶體來控制High或Low)


2015年12月3日 星期四

ARM Cortex MCU 開發環境建置


開發...最麻煩的就是把環境弄好, 才能開始研究,做更深入的研究



 以新唐Nuvton 的IC而言, 目前它支援的開發IDE有3種

  • Keil RealView MDK V4.12 or higher
  • CooCox CoIDE V1.0.0 or higher
  • IAR Embedded Workbench V5.xx

底下介紹的是使用ARM MDK環境建置的說明:
  1.  安裝Keil MDK (v5.xx) 的IDE工具 (這個基本上一直"下一步"就裝完了)
  2.  安裝NuLink Driver for MDK (Debug 及 線上燒錄) 或使用Jlink 燒錄  

ARM MDK 開發工具


ARM based MCU=ARM Cortex-M + Peripherals。

針對ARM Cortex-M 這種MCU的開發, ARM 原廠提供的是MDK ARM開發工具。



2015年11月23日 星期一

ARM MCU Board


使用Raspberry Pi 的時候, 是不是常常苦惱於缺乏PWM、ADC及DAC的功能? 
而這都卻是在Arduino上所擁有的基本能力。過去, 為了讓Raspberry Pi 補上這些功能,就會開始用麵包板去插上我們需要的IC或者購買一堆的小的模組板,如PCA9685 for PWM,MCP3008 for ADC 這類的模組板來接在Raspberry Pi 。

要讓 Raspberry Pi  的功能更加完美就要加上更好的左右手,所以我們就開發了這一塊板子。
  
  ARM MCU Board提供40 pin GPIO座,故可以直接在插在Raspberry Pi 上面作為擴充PWM與ADC等等功能的擴充。 ARM MCU Board 已提供好韌體,Raspberry Pi 可以透過UART、I2C、SPI 界面,就可以實現ADC, PWM的功能。同時,這片板子本身是可以stand alone 運作, 因為它本身就具有一顆ARM Cortex-M0 的晶片 (使用的是新唐的Nano130SD2BN) ,你也可以拿 Keil MDK 來撰寫其上的韌體程式。







2015年9月30日 星期三

ARM MCU Board (ARM Cortex-M0)

 
這塊板子MCU採用的是新唐科技的NANO130低功耗系列晶片(NANO130SC2BN) , 其相關規格如下:
  • I2C延伸腳座x2
  • UART延伸腳座
  • DAC延伸腳座x2
  • ADC延伸腳座x7
  • PWM延伸腳座x7
  • ICE燒入腳座
  • GPIO發光二極體x1
  • GPIO按鈕x1
  • USB 2.0 Port
  • ADC可變電阻
  • Reset 按鈕開關
  • External Power Supply延伸腳座
  • OPT INT Power Jump 腳座
  • External Power Supply 穩定電容座
  • 三色led判斷Power Source狀態(紅:ICE 綠:PI 2 藍:USB)
  • 40 pin Head ( for raspberry Pi )



2015年5月11日 星期一

Timer計時器/計數器暫存器實驗



MCU (Microchip PIC18F46J50) Timer計時器/計數器原理說明

 Timer 1計時器/計數器控制方式


  Timer 1計時器/計數器暫存器

2015年3月5日 星期四

[Embedded]ARM Cortex M3 for LM3S3748 USB Part1 編譯Hello

原本想要用ARM官方網站提供的開發工具Keil開發,但是在Buil的時候遇到了此問題(.\rvmdk\RTOSDemo.axf: error: L6047U: The size of this image (39608 bytes) exceeds the maximum allowed for this version of the linker Target not created)
所以改採用open source開發環境。

以下方式介紹用Windows 7環境下,建立GNU開發環境編譯ARM Cortex M3 for LM3S3748 USB CODE,將程式燒錄至板子上

1.安裝 Minimalist GNU for Windows

此工具是一個GNU的開發環境,這個工具將在Windows系統下建立,下在安裝完成後點及MinGW 
Installer如下圖所示,請把MSYS的選線勾選起來安裝,建立MinGW Shell,切記一定要勾選GCCmake選項。









[Embedded]ARM Cortex M3 for LM3S3748 USB Part2 移植FreeRTOS

延續Part1主板LM3S3748的實作,這次我們將在此主板上移植FreeRTOS。

在此為了要移植FreeRTOS,接著下載FreeRTOS套件

在這裡我下載的版本是FreeRTOS_V4.8.1_Stellaris,下載完之後把整包檔案移植到開發環境下的目錄,以我的目錄來看的話我是放在C:\MinGW\msys\1.0\FreeRTOS_V4.8.1_Stellaris。

http://www.ti.com/tool/ekc-lm3s3748



編譯程式


請     如下圖所示在MINGW32視窗下切換至/FreeRTOS_V4.8.1_Stellaris\FreeRTOS\Demo\CORTEX_LM3Sxxxx_Eclipse\RTOSDemo
執行make all,編譯成功後會如下圖所示產生RTOSDemo.bin檔案:



[Embedded]ARM Cortex M3 for LM3S3748 USB Part3 在FreeRTOS Task Create

在此建立新的Task之前要先認識xTaskCreate函式

建立工作之函式:
xTaskCreate(工作函式,工作描述字串,堆疊深度,參數,優先順序,工作指標)
工作函式宣告:
void 工作函式名(void * pvParams);

修改FreeRTOS底下的main.c檔案

新增LED 任務