發表文章

目前顯示的是 5月, 2023的文章

再論TI TMP102

圖片
 雖然TMP102只是一個温度感測器, 但因為它使用I2C溝通界面, 讓我們可以學習I2C的用法, 而且架構簡單, 用起來不難, 但又有許多功能可以設定, 玩起來很有意思, 最主要的是其温度感測算是很準, 所以我一直很喜歡這顆。加上網路上也有很多人在用, 討論的文章和驅動程式都很容易找到, 所以這裡我想再談一下這顆的一些用法。 1. 驅動程式的寫法:  其實可以不用自己寫驅動程式, 如果你使用Arduino, 那Sparkfun已經幫大家寫好了:  SparkFun_TMP102_Arduino_Library  請直接拿去用就好了! 如果你使用MicroPython, 那khoulihan也寫好一個:   khoulihan/micropython-tmp102 ,  他其實已經寫得很好。 但是我還是自己用MicroPython再寫了一次, 原因是khoulihan的驅動太完整了, TMP102所有的功能都實作了! 可惜的是我想用的一個開發板的Flash空間太小, 放了這個驅動後, 剩下的空間就太小了, 要寫其他的程式就很受限! 另外, 在自己改寫的過程中, 我發現自己又學到一些東西。雖然多花了幾天時間在嘗試, 還是收穫不少! 其實2017年在玩PyMata的時候, 就已經寫過TMP102的驅動, 參見 python code for pymata tmp102 , 但這個是架在PyMata之上的, 基本上是在PC上面執行, 稱之為驅動, 似乎有些奇怪。但程式邏輯和想法基本上相同。 操作TMP102的方法, 很簡單, 就是設定其暫存器的值就可以了, 如下圖 (取自TMP102的datasheet), TMP102主要有4個暫存器, (還有一個指位暫存器Pointer Register), 要取得温度值, 就讀取Temperature Register的內容值, 再做一些格式轉換即可。要讓TMP102進入省電的Shutdown模式, 就只要將Configuration Register內的某一個位元設成1就可以了。問題是如何指定要存取那個暫存器呢? 那就要在指位暫存器先指定就可以了, 例如, 將指位暫存器設成0x01, 就可以存取Configuration Register。 不過, 在讀或寫暫存器值時, 指位暫存器值的設定方式有點不太相同! 以下分別說明: 讀取暫

JLink SWD + VCOM (virtual UART)接線方法

圖片
 這算是個差不多先生的故事, 因工作的關係, 由網路管理和系統管理以及企業流程程式設計的領域, 進入了微控制器(MCU, 單晶片)firmware開發的世界。我們內部有從電路設計, 到PCB Layout, Assembly的能力, 所以除了MCU原廠出的Evaluation Board, Development Board外, 我們內部會在取得MCU IC後, 製作自己的工程板(Engineering Board)。驗證沒問題後, 就會將工程板改成真正產品的量產板。 幾乎每個人都以自己的角度來看世界, 硬體部門在做工程板的時候, 就我們firmware的角度來看, 他們應該沒想過我們要怎麼過日子吧! 要怎麼把firmware燒錄到工程板, 這件事就可以看得出來, 工程板上就是把比較會用到的(硬體的角度)Pin拉出來, 例如SWCLK, SWDIO, VCC, GND。然後, 給你一支JLink除錯器, 接下來怎麼接上去, 就是你家的事了! 當然, 這也是給我們自我訓練的機會。 原廠的開發板, 有部份會有onboard debugger, 像下面這張Nordic PCA10040, 我圈起來的部份就是, 通常都會是一顆JLink的晶片。 有些原廠的板子也會沒有onboard debugger, 這時候他們通常會設計一些Connector, 20pin, 9pin之類的, 現在debugger的廠商種類很多, 連接線也一樣有很多種。如以下開發板, 就有一個JLink的標準20Pin的連結器。 這樣使用原廠開發板寫firmware時, 只要用標準的20pin連接線, 來連接JLink除錯器和開發板就可以了。而這連接線和接頭都有防呆的缺口設計, 所以不會弄錯。 而我們一開始想的是, 如何把MCU上的firmware寫好, 除錯器只知道可以用來燒錄firmware到晶片上, 也可以用來做程式的除錯。這樣就好了, 其他的也沒時間多想了。差不多先生就這樣上身了。因此, 我知道, 原廠的JLink除錯器, 在我們使用SWD除錯時, 只要找到20pin裡的4個: VTref, SWCLK, SWDIO, GND。把這4個Pin接到工程板上的VCC, SWCLK, SWDIO, GND, 然後想辦法給工程板供電, 就可以開始工作了, 此時正常的話, IDE上都會看到有抓到除錯器和Ta

Infineon PSoC 6 BLE PROTOTYPING KIT 除錯器韌體更新

圖片
  最近在玩這張評估板, Cypress CY8CPROTO-063-BLE PSoC 6 BLE PROTOTYPING KIT, 原廠設計自帶除錯器, 如上圖左邊部份, 標註為KitProg2。 Cypress似乎出三種除錯器: KitProg2, KitProg3, MiniProg4; 自帶的用最低階的我能理解, 但看看不同除錯器支援的功能: 特別是IDE的支援, 明顯KitProg3是比較好的多! 而且似乎KitProg2支援的PSoC Creator只能在Windows上跑! 剛好看到Cypress文件說,  You can update your KitProg device to latest version of KitProg3 firmware with DAPLink using the crossplatform, command line Firmware Loader (fw-loader) tool. 就來試試: 首先要去download fw-loader這個工具,  https://github.com/Infineon/Firmware-loader 然後unzip, 在命令列裡進入這個目錄裡的 fw-loader\bin目錄,  先將評估板接用USB線連到電腦 下指令: (.\fw-loader.exe --device-list) PS C:\fw-loader\bin> .\fw-loader.exe --device-list Cypress Firmware Updater, Version: 3.4.0.1772 (C) Copyright 2018-2022 by Cypress Semiconductor Corporation (an Infineon company) All Rights Reserved Info: Start the API initialization Info: Connected - KitProg2-151A056E021F1400 Info: The hardware initialization has completed in 531 ms The connected supported devices:         1: KitProg2-15