19
HT66FB582 USB PDF Data Logger 應用範例 AN0451T V1.30 1 / 19 March 21, 2019 HT66FB582 USB PDF Data Logger 應用範例 文件編碼:AN0451T 簡介 USB PDF Data Logger 可使用不同感應器,並且長時間記錄感應數據,在插入 USB Port 後在 Data Logger 內自行產生數據 PDF 檔,提供使用者應用,常用於冷鏈運輸等用途,主要記錄 溫度與濕度。 Holtek 針對 USB PDF Data Logger 產品領域,開發大容量 ROM & True EEPROM 產品, HT66FB582 便於存放 Raw Data PDF 檔,並提供產出 PDF 檔案的 LIB,本文將介紹使用 HT66FB582 開發溫/濕度 Data Logger 方案。 功能說明 本範例之 Data Logger 功能說明如下: 工作溫度範圍-40~85 可由 AP 選擇數據來源 (1)外加 DHT12 溫濕度模組 OPTION(2) NTC 溫測電路(使用溫測電路) AP 透過 USB 介面對 Data Logger 做參數設定測量間距選擇、過溫()警告、溫度單位、 時間、啟動延遲時間設定 測試平均耗電 (1)以測量間距設定=10 秒,記錄 NTC 溫測。 (2)平均耗電為 10µA (不含 DHT12 溫濕度模組)(3)以上敘述條件使用 CR2032 3V(240mA)電池,以電池 80%壽命計算約可用 2.2 年。 LED 顯示 (1) LED 1 Alarm (警示已超過高低警示)(2) LED 2 Low Battery 警示。 (3) LED 3 Mode 指示 (記錄狀態指示) KEY:開始 & 停止鍵 自動判斷是否擴充外加 SPI Flash (1) 僅使用 MCU 內部 Flash ROM (48Kx16) & EEPROM(16K byte),可記錄 7500 (1 2byte),產生的 PDF 檔為一頁。 (2) 擴充 SPI Flash 記錄點數最多可 15000 點。 (3) 擴充外加 SPI Flash 可在 PDF 檔中顯示所有計錄點數數據。

HT66FB582 USB PDF Data Logger應用範例 · HT66FB582 USB PDF Data Logger應用範例 AN0451T V1.30 2 / 19 March 21, 2019 插入電腦後形成一個磁碟機並自動產生PDF 檔,在每頁記錄576

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 1 / 19 March 21, 2019

HT66FB582 USB PDF Data Logger 應用範例

文件編碼:AN0451T

簡介

USB PDF Data Logger 可使用不同感應器,並且長時間記錄感應數據,在插入 USB Port 後在

Data Logger 內自行產生數據 PDF 檔,提供使用者應用,常用於冷鏈運輸等用途,主要記錄

溫度與濕度。

Holtek 針對 USB PDF Data Logger 產品領域,開發大容量 ROM & True EEPROM 產品,

HT66FB582 便於存放 Raw Data 及 PDF 檔,並提供產出 PDF 檔案的 LIB,本文將介紹使用

HT66FB582 開發溫/濕度 Data Logger 方案。

功能說明

本範例之 Data Logger 功能說明如下:

工作溫度範圍-40℃~85℃

可由 AP 選擇數據來源

(1)外加 DHT12 溫濕度模組 ‒ OPTION。

(2) NTC 溫測電路(使用溫測電路)。

由 AP 透過 USB 介面對 Data Logger 做參數設定測量間距選擇、過溫(濕)警告、溫度單位、

時間、啟動延遲時間設定

測試平均耗電

(1)以測量間距設定=10 秒,記錄 NTC 溫測。

(2)平均耗電為 10µA (不含 DHT12 溫濕度模組)。

(3)以上敘述條件使用 CR2032 3V(240mA)電池,以電池 80%壽命計算約可用 2.2 年。

LED 顯示

(1) LED 1 Alarm (警示已超過高低警示)。

(2) LED 2 Low Battery 警示。

(3) LED 3 Mode 指示 (記錄狀態指示)。

KEY:開始 & 停止鍵

自動判斷是否擴充外加 SPI Flash

(1) 僅使用 MCU 內部 Flash ROM (48Kx16) & EEPROM(16K byte),可記錄 7500 點 (1 點

2byte),產生的 PDF 檔為一頁。

(2) 擴充 SPI Flash 記錄點數最多可 15000 點。

(3) 擴充外加 SPI Flash 可在 PDF 檔中顯示所有計錄點數數據。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 2 / 19 March 21, 2019

插入電腦後形成一個磁碟機並自動產生 PDF 檔,在每頁記錄 576 點原始資料的狀況下,

每頁產出所需時間約 4 秒

USB 插入 PC 後,以 Mass storage device 形式內產出 PDF 檔,支援 FAT,可於 Windows、

Mac、Android 系統上使用

Mass Storage Class 通過 USB Command Verify 測試

PDF 重新產出後,Mass storage device 中的原資料會清除

工作原理 HT66FB582 提供 USB 2.0 Full Speed interface,Demo Board plug-in USB 後,將以 mass storage

device 方式存在

SPI Flash 使用 HT66FB582 獨立 SPI 介面(SPIA),使用方式請參考 Serial Peripheral Interface

– SPIA 章節

NTC 溫測電路,可由內部 ADC 電路由 VR PIN (Share PC7) 輸出 2.0V 穩定電壓,ADC 使

用方式請參考 Analog to Digital Converter 及 PCS1 Register 章節

DHT12 為以 I2C 做為介面的溫濕度計,HT66FB582 以 I/O implement I

2C master mode

因 SPI Flash VDD為 2.6V~3.3V,需使用一個 3.3V LDO(U4)在插上 USB Port 時,可提供 SPI

Flash 3.3V,並且使用一個 PMOS (Q2),讓 USB Port 移除後,SPI Flash 可使用 CR2032 做

為電源。

硬體方塊圖

HT66FB582 USB PDF Data Logger 硬體方塊圖

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 3 / 19 March 21, 2019

硬體電路圖

HT66FB582 USB PDF Data Logger 電路圖

軟體說明

PDF Library 支援項目

支援英文、繁中、簡中字型

一份 PDF 文件,最多可使用三種字型

支援 1 個圖形 Logo

支援字型大小、顏色設定

支援線圖粗細、顏色設定

最大支援 80 頁

Library 大小約 14K word,包括 IAP、EEPROM access、PDF、乘除法器等 API

Source Code

相關程式附件,敬請參閱 Holtek 官方網站的應用方案(Data Logger 應用)網頁資訊。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 4 / 19 March 21, 2019

目錄結構

Data Logger

--[Output] output file directory

--[Source]

--application 放置與客戶應用相關功能之源代碼

--hw 放置於 MCU 硬體相關之源代碼

--os 放置系統層面相關之源代碼

--usb 放置與 usb 相關之源代碼

--DLUtility.exe 將 JP2 圖檔轉為 ASM 檔及計算 FAT12 filename checksum 之軟體

檔案說明

[Source]

HoltekPDF.lib PDF 產出相關功能庫

[Application]

--Main 主程式,LED 顯示/溫度紀錄/時間計算

--Var 變數宣告

--Holtek_Jp2.asm Logo 圖形檔

[HW]

--ADC NTC 溫度紀錄

--IIC_Master 温濕度模組相關功能

--SPI Flash 存取相關功能

--FAT FAT12 相關功能

--FAT_Info12 FAT12 Boot Sector 資訊

--PDF PDF 內文產出相關功能

--PDF_Data PDF 內文定位相關資訊

[USB]

--CLS USB 列舉 class command 相關功能

--SCSI Mass Storage Class command 相關功能

--STD USB 列舉 standard command 相關功能

--USB_DESC USB 列舉資訊

--USB_INT USB 中斷處理

--USB_LIB USB FIFO 存取相關功能

PDF Library 參數說明

void PDF_Initialize(u8 page_x, u8 page_y, u16 page_w, u16 page_h);

產生 PDF 的第一個步驟,初始化

參數:

page_x/page_y:頁面起始座標,一般為(0,0)

page_w/page_h:頁面長/寬

void PDF_CreateXObject(u16 jp2_addr, u16 jp2_len, u8 jpg_width, u8 jpg_height, u16 x,

u16 y, u8 w, u8 h);

若需要圖形 Logo,請在 CreatePageObject 之前需呼叫此 Function

目前 Library 只支援 JP2 格式

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 5 / 19 March 21, 2019

參數說明

jp2_addr:圖形資料所在位址

jp2_len:圖形資料的長度

jpg_width:圖形之寬度(pixel)

jpg_height:圖形之高度(pixel)

x,y:圖形顯示座標(x,y)

w,h:圖形實際顯示寬與高

使用方式將於下方的使用範例詳細說明(如何修改 logo)

void PDF_CreateInfoObject(TimeStamp datetime, char *author, char *title, char *subject);

建立 PDF 資訊

datetime:pdf 建立時間

author:pdf 建立者

title/subject:pdf 標題與主題

void PDF_CreateFontObject(char* font);

建立英文字形,請輸入字型名稱

必須於 CreatePageObject 之前呼叫

void PDF_CreateChiFontObject3(char *font,_Bool bTrad);

建立中文字形、font 請輸入字型名稱、繁體中文 bTrad 為 1、簡體中文 bTrad 為 0

必須於 CreatePageObject 之前呼叫

void PDF_CreatePageObject(u8 page);

建立 PDF 頁面

void PDF_BeginStream();

開始建立頁面內容

void PDF_EndStream();

結束建立頁面內容

void PDF_BeginText();

開始建立頁面內容中的文字

void PDF_EndText();

結束建立頁面內容中的文字

u32 PDF_Uninitialize();

完成 PDF 檔

void PDF_DrawRect(u16 x, u16 y, u16 w, u16 h);

繪製矩形

參數請傳入啟始座標(x,y)及(w,h)寛與高

註:PDF 頁面的右下角為座標(0,0)

void PDF_MoveTo(u16 x, u16 y);

移動到座標(x,y)準備開始繪製直線

void PDF_LineTo(u16 x, u16 y);

從 MoveTo 設定之座標繪製直線至(x,y)座標

MoveTo 與 LineTo 的組合,僅只是設定繪圖路徑,呼叫 LineStroke 才真正執行繪圖

void PDF_LineStroke();

說明如上

MoveTo(x1,y1);

LineTo(x2,y2)

LineTo(x3,y3)

LineStroke()

即是繪製(x1,y1)到(x2,y2)到(x3,y3)的線

void PDF_DrawLine(u16 x1,u16 y1,u16 x2,u16 y2);

即 MoveTo(x1,y)+LineTo(x2,y2)+LineStroke()組合

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 6 / 19 March 21, 2019

void PDF_SetFont(u8 idx,u8 size);

設定後續建立的文字(AddText)所使用的字型及大小

idx 為字型索引,呼叫 CreateFontObject 及 CreateChiFontObject3 時即會產生字型索引,

索引值由 1 開始

size 為文字大小

void PDF_SetFontColor(float r,float g,float b);

設定後續建立的文字所使用之顏色

r/g/b 的值由 0~1

(R,G,B)=(0,0,0)為黑色

(R,G,B)=(1,1,1)即為 true color 的(255,255,255)白色

(R,G,B)=(0.5,0.5,0.5)即為 true color 的(128,128,128)灰色

void PDF_SetLineColor(float r,float g,float b);

設定後續繪製之直線的顏色

r/g/b 說明同上

void PDF_SetLineWidth(float w);

設定後續繪製之直線的寬度

void PDF_SetDashLine(u8 on, u8 off);

設定虛線模式

on 為繪製,off 為不繪製(on,off)=( 3,2),表示繪製 3 單位,再留白 2 單位

(on,off)=(0,0)為繪製實線

void PDF_AddText(int x, int y, char *text, u8 hex);

於座標(x,y)顯示文字 text

hex=1 時將文字編碼成 16 進制顯示,可以加強 PDF 檔 raw data 的不可讀性,提高安全

其他

int sprintf(char *buf, const char *format, long *varg);

因 Holtek C Compiler 不支援不定長度參數,故目前提供的 sprintf 尚不支援%f, %s

u32 MD_Div32(u32 dividend, u16 divisor, u16 *remainder);

32bits/16bits 正整數相除

回傳值為商,參數 remainder 為餘數

u32 MD_Div32_ISR(u32 dividend,u16 divisor, u16 *remainder);

Holtek C Compiler 不支援主迴圈程式與中斷程式呼叫同一 function,故提供另一函式可

於中斷中呼叫

功能同上

u16 MD_Div16(u16 dividend, u16 divisor, u16 *remainder);

16bits/16bits 正整數相除

回傳值為商,參數 remainder 為餘數

u16 MD_Div16_ISR(u16 dividend, u16 divisor, u16 *remainder);

說明請參照 MD_Div32_ISR

u32 MD_Mul(u16 multiplicand, u16 multiplier);

16bits x 16bits 正整數相乘

回傳值為積

u32 MD_Mul_ISR(u16 multiplicand, u16 multiplier);

說明請參照 MD_Div32_ISR

u8 IAP_EnableFlashWrite();

啟動 MCU Flash 之 Write/Erase 功能

void IAP_DisableFlashWrite();

關閉 MCU Flash 之 Write/Erase 功能

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 7 / 19 March 21, 2019

void IAP_PageErase(u16 wAddr);

Erase MCU Flash 1 個 page(128 words)

參數 wAddr 其數值必須與 page 對齊

void IAP_WriteFlash(u16 wAddr, char *p, u8 ucLen);

寫入資料到 MCU Flash

void IAP_ReadFlash(u16 wAddr, char *p, u8 ucLen);

讀取 MCU Flash

u8 IAP_VerifyFlash(u16 wAddr, char *p, u8 ucLen);

驗證 MCU Flash 的內容

void EEPROM_Read(u16 addr, char *buf,u8 len);

讀取 MCU 內部之 EEPROM

void EEPROM_Write(u16 addr, char *buf,u8 len);

寫入 MCU 內部之 EEPROM

void PDF_FloatToChar2_1(short x, char *ss);

浮點數所佔的 byte 數較多且運算速度較慢,故本温濕度計錄值為實際值 x10

本函式的作用是將 10 倍之數值轉成浮點字串

例如 x=293,ss 則會取得"29.3"

最多顯示 2 位數及一小數

void PDF_FloatToChar3_1(short x, char *ss);

浮點數所佔的 byte 數較多且運算速度較慢,故本温濕度計錄值為實際值 x10

本函式的作用是將 10 倍之數值轉成浮點字串

例如 x=1293,ss 則會取得"129.3"

最多顯示 3 位數及一小數

PDF Lib 使用範例及程式說明

如何於 IDE3000 中引入 PDF Library ?

請執行 IDE3000 中的[選項] [ 專案設定]

在[連接選項]用[瀏覽]選取 HoltePDF.lib

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 8 / 19 March 21, 2019

如何建立 PDF 檔?

PDF_Initialize();

PDF_CreateXObject(JP2_ADDR,JP2_LEN,JPG_WIDTH,

JPG_HEIGHT,JPG_X,JPG_Y,JPG_W,JPG_H);

PDF_CreateInfoObject(datetime,"Holtek Inc.","Holtek PDF Report","Holtek USB");

PDF_CreateFontObject("Helvetica");

PDF_CreatePageObject(0);

PDF_BeginStream();

/* 於此處建立繪圖相關動作 */

/* PDF_MoveTo, PDF_LineTo…. */

PDF_BeginText();

/* 於此處建立文字資料 */

/* AddText */

PDF_EndText();

PDF_EndStream();

PDF_Uninitialize();

如何建立中文字

PDF_Initialize();

PDF_CreateXObject(JP2_ADDR, JP2_LEN, JPG_WIDTH,

JPG_HEIGHT, JPG_X, JPG_Y, JPG_W, JPG_H);

PDF_CreateInfoObject(datetime, "Holtek Inc.", "Holtek PDF Report", "Holtek USB");

PDF_CreateFontObject("Helvetica"); //字型索引 0

PDF_CreateChiFontObject3("標楷體"); //字型索引 1

PDF_CreatePageObject(0);

PDF_BeginStream();

/* 於此處建立繪圖相關動作 */

/* PDF_MoveTo, PDF_LineTo…. */

PDF_BeginText();

PDF_SetFont(2, 8);

/* AddText */

PDF_AddText(x, y, "這是中文", 1);

PDF_EndText();

PDF_EndStream();

PDF_Uninitialize();

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 9 / 19 March 21, 2019

如何修改 logo ?

目前只支援 JP2 格式圖檔,長寬不能超過 255 x 255 像素,且一份文件僅能有一個 logo。

a. 先建立好 jp2 格式的 logo 圖檔。

b. 執行專案目錄下之 DLUtility.exe 檔,並開啟 logo 圖檔。

c. 按下"轉換"按鈕,產生同檔名之 asm 檔案。

d. 將轉換成功訊息視窗中顯示的長度,定義到 PDF_DATA.h 中。

#define JP2_LEN 4212

圖檔之寬/高定義至 PDF_Data.h 中

#define JPG_WIDTH 160

#define JPG_HEIGHT 59

定義 logo 於頁面中顯示之位置及大小

#define JPG_W 100

#define JPG_H 35

#define JPG_X MARGIN_W

#define JPG_Y (PAGE_HEIGHT-MARGIN_H-20)

e. 將步驟 c 產生的檔案加入專案中。

並於 PDF_Data.h 中定義其存在之位址。

#define JP2_ADDR 0X5000

如下之定義表示圖檔之位址為 2*0x2000+0x1000 = 0x5000

ROMBANK 2 JPG

jpg .section at 1000h 'code'

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 10 / 19 March 21, 2019

註:Holtek MCU ROM 架構有 Bank 的概念,一個 Bank 為 0x2000 words,即 16K Bytes,

故 JP2 圖檔最大不能超過 16K。

若圖檔超過 8K 時,請將

jpg .section at 1000h 'code'

改為

jpg .section at 0000h 'code'

如何使用局部的 MCU Flash 做為 Disk 空間?

若要使用局部的 rom 做為 disk,請使用工具→程式位置設定。

將除了 FAT_Info12.c 之外的所有檔案,都設定在 0~xxxxh 之間(視程式所需空間而定)。

如此一樣,剩下的其他空間將不會被程式所佔據。

除此之外,C Compiler 內部會產生一個_Crom2Prom 區段,也必須手動將其位址設定在程式

侷限範圍內,例如 1000(此數值為 16 進制)。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 11 / 19 March 21, 2019

FAT_SetData 如何與 PDF Library 連結?

為了減省 ram 的使用,PDF Library 僅配置了一個 64byte 的 ram,用來收集 pdf 資料,收集滿

64 byte 後,就要寫入 flash 中。故 user 必須提供一個 FAT_SetData(char*)供 Library 呼叫,用

來將資料寫入 flash,寫入 flash 的位址,user 必須自行計算。

如何修改磁碟機(U 盤)名稱及 PDF 檔名?

FAT.c 中,RootDir 的資訊包含了 Disk Label 及 PDF File Name。

第一組 32 Bytes 為 Label Name。

第二組 32 Bytes 為 Long File Name。

雖然目前的程式檔名長度在 8Bytes 之內,但仍需要 Long File Name 之紀錄。

藍色框為序號,在檔名小於 8Bytes 的狀況下,請固定填 0x41。

總檔名長於 13Bytes 時的紀錄不在此說明,請自行參考 Microsoft FAT12 Long File Name White

Paper。

紅色框請修改成所需要之檔名(unicode),包含主檔名與副檔名之間的(.)。

多餘的 bytes 請填上 0x0000。

下圖中的 0x7F 為 Checksum,請執行 DLUtility 後,於 8.3 FileName 中輸入"不包含 dot"的檔名,

主檔名不足 8Bytes 也請補上空白。例如 HOLTEK.PDF,請輸入 HOLTEK PDF,

按下 Calc 後即可算出 Checksum。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 12 / 19 March 21, 2019

第三組 32 Bytes 為 8.3 格式之 File Name。

藍色框 8Bytes 為檔名,不足 8Bytes 請填 0x20。紅色框 3Bytes 為副檔名。本組紀錄所填之檔

名不包含主檔名與副檔名之間的(.)。

其餘的檔案建立時間及大小等資訊不用填寫,f/w 會動態修改。

外掛 flash 大小改變時,如何修改 U 盤空間?

#define FAT_NO 0x01

#define ROOT_ENTRY 0x0010 //file number

#define DISK_START 0x8000

#define FAT1_START (DISK_START+0x100) //

#define ROOT_START_EXT (FAT1_START+0x400)

#define DATA_START_EXT (ROOT_START_EXT+0x100)

#define FLASH_SIZE 0x80000

FAT_NO 為 FAT table 的個數,ROOT_ENTRY 代表本檔案結構最多可放幾個檔案。為了節省

空間 FAT table 設定為一個,檔案最多為 16 個。

DISK_START 是 U 盤起始的位址,代表 0~0x7FFF 留給程式區。程式區大小,可依實際狀況

調整,設定方式請參考本章節項目 5。若程式區大小改變了,請修改 DISK_START 這個定

義值。

本程式使用 FAT12,因為 FAT12 所需的 FAT table 較小,而且 Disk Size 並沒有大到需要使用

FAT16。

FAT_START 到 ROOT_START_EXT 之間的大小,影響著 U 盤的空間,這個空間用來填寫

cluster 編號,目前程式設定為 1 cluster = 1 sector = 512 Byte,故計算方式為:

(DATA_SIZE/512) x 1.5 / 2

FAT12 使用 3 個 nibble 來記錄 cluster 編號,故乘上 1.5。

Holtek Program ROM 的單位為 Word,故除以 2。

計算後,最後必須取值為 80H 之倍數。

軟體與 U 盤的溝通機制為何?

軟體透過 Inquiry Command 取得的資訊來判斷是否是目標U盤,當您修改了 scsi.c 中的 const

unsigned char sInquiryDataFormat12 資訊後,軟體呼叫 FindDevice 函式時,傳入之參數必須同

時配合修改。

Demo Board 程式如何修改?

Main.c

所有與紀錄相關的功能都在此檔案中。

Time base 時間計算

溫度/濕度量測記錄

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 13 / 19 March 21, 2019

FAT.c

提供 PDF 產出過程中的資料寫入函式。

提供 PDF 產出後,FAT 的 cluster 記錄及檔案大小記錄。

USB_INT.c

SCSI.c

提供 scsi vendor command,做為設定 log 參數的設定路徑。

SCSI Vendor Command ID 定義在 SCSI.h 中:

#define SCSI_VENDOR_WRITE (0xEF)

#define SCSI_VENDOR_READ (0xFE)

PDF.c

產出 PDF 文件框架及 PDF 頁面內文之實作。

PDF_Data.h

定義 PDF 內文中,表格及 Logo 等資訊。

FAT_Info12.c

FAT12 之 Boot Sector 定義。

Define.h

定義所有 U 盤起始位址及 True EEPROM 資料格式等相關數值。

HOLTEK_JP2.asm

由 JP2ASM 產生之 logo 圖檔資料。

RAM 的配置:

USB FIFO 佔用了 RAM 0x780~0x7FF。

PDF Library 佔用了 RAM 0x680~0x480。

但除了 PDF 產出階段外,PDF Library 使用的 RAM 可以開放出來做其他的使用。

註:使用__attribute__ ((at(xxxxx))) 自行定址的變數位址,才可重複使用。

Var.h

温濕度每紀錄 32 筆(64bytes)才寫入 EEPROM 或 Flash 中。

0x580~0x5BF LOG_TEMP1[64]

0x5C0~0x5FF LOG_TEMP2[64]

0x680~0x6BF LOG_HUMID[64]

USBFIFO.h

0x480~0x4BF FIFO_OUT[64]

SCSI.h

0x580~ CBW

0x59F~ CSW

0x5AC~ MSC

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 14 / 19 March 21, 2019

如何於 HT-IDE3000 環境中處理 EEPROM 資料?

EEPROM 記錄之資料包括,温濕度資料/配置資訊/PDF 產出內部資訊等等,詳細資訊請看下

一章節。若需要手動編輯 EEPROM 資料時,請執行 IDE 功能表[工具]/[編輯器]/[Data Editor]。

編輯後請[儲存]。

[下載]按鈕,用來將資料下載至 MCU 內部之 EEPROM 中。

[上傳]按鈕,用來將 MCU 內部之 EEPROM 資料讀出.讀出後並不會自動儲存,若需要,請

自行按下[儲存]按鈕。

執行 IDE 功能表[選項]/[專案設定],於設定畫面中勾選[下載 EEPROM]。

則每次執行[編譯]/[建置]或[編譯]/[全部重建]時,會自動下載 EEPROM 之資料。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 15 / 19 March 21, 2019

MCU 內部 EEPROM 資料格式說明

0~3B00 為溫度紀錄區,其中之溫度表示皆為實際溫度 x10,例如 0x0125=293。

即代表 29.3 度,內部 EEPROM 最多紀錄 7500 筆,若需要紀錄更多點數,則紀錄到外部 Flash

中。

0000~3AFF

温度紀錄區。

3B00~3F00

Pdf 產出暫存區。

保留之暫存區目前支援最大 80 頁之產出.若超出此頁數,將造成其後之 EEPROM 資料

被破壞。

3F40~3F9F

Alarm Event 發生之時間,每一個 event 最多紀錄 2 筆。

40 -NTC low temp1 48 -NTC low temp2

50 -NTC high temp1 58 -NTC high temp2

60 -DHT12 low temp1 68 -DHT12 low temp2

70 -DHT12 high temp1 78 -DHT12 high temp2

80 -DHT12 low humid1 88 -DHT12 low humid2

90 -DHT12 high humid1 98 - DHT12 high humid2

3FA0

LowBattery 時間。

3FB0

紀錄 Alarm Event Count. 0~255。

0 NTC low temp count

1 NTC high temp count

2 DHT12 low temp count

3 DHT12 high temp count

4 DHT12 low humid count

5 DHT12 high humid count

6 1 表發生 low battery

3FC0/3FC1

當 3FC0=5A & 3FC1=A5 時,表示已設定好參數,可以進行溫/濕度記錄。

3FC2

模組選擇,沒有模組可選擇時,可忽略此參數。

3FC3

溫度單位選擇 0→C,1→F。

3FC5/3FC4

高溫警示,例如 0x012C=300,即 30.0 度。

3FC7/3FC6

低溫警示。

3FC9/3FC8

高濕度警示,例如 0x012C=300,即 30.0%。

3FCB/3FCA

低濕度警示,例如 0x64=100,即 10.0%。

3FCD/3FCC

量測間距(秒數)。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 16 / 19 March 21, 2019

3FCE

延遲啟動(分鐘數)。

3FCF~3FD4

現在時間設定。

BYTE1 year; //since 1980

BYTE2 month;

BYTE3 day;

BYTE4 hour;

BYTE5 min;

BYTE6 second;

3FF0~3FF5

開始紀錄之時間,格式同上。

3FFD/3FFC

紀錄之點數。

3FFF/3FFE

Signature,當數值為 55AA 時,才會產生 PDF 檔。

產出後,此欄位會改為 0xFFFF。

操作說明

Demo Board 說明

HT66FB582 USB PDF Data Logger Demo Board

HT66FB582:主控 MCU

USB Connector:用於連接 PC USB port

LED:模式/低電壓/警告顯示

Button:用於開始/停止使用

32kHz Crystal:為 RTC Crystal

OCDS Interface SPI Flash NTC DHT12 CR2032 電池

ICP Interface

USB Connector

32K Crystal Button HT66FB582 LED

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 17 / 19 March 21, 2019

SPI Flash:主要用於存放 PDF 檔

ICP Interface:軟體更新燒錄使用

OCDS Interface:用於產品開發時,仿真器介面

AP 操作說明

參數設定軟體 Data Logger .exe,AP 操作介面如下。

感測器選擇

可複選 DHT12 溫/濕度感測器及使用 NTC 溫測電路做為感測器來源。

單位選擇

溫度可選擇℃/℉。濕度單位為%RH(若感測器有勾選 DHT12)。

警示設定

設定高/低溫及高/低濕度警示條件。

量測間距

選擇量測間距。

啟動延遲時間

設定啟動延遲時間,當啟動測試後將延遲使用者設定的時間後才開始做溫/濕度測試。

時間設定

更新:選擇是否更新 Data Logger 的時間。

PC:時間由 PC 時間取得。

Data Logger:時間由 Data Logger 內部時間取得。

取回按鍵

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 18 / 19 March 21, 2019

將 Data Logger 中的設定/選項讀出,方便瞭解原設定。

設定按鍵

將使用者的設定/選項寫入 Data Logger 中。

結束按鍵

結束設定。

操作步驟

步驟一:將 HT66FB582 Demo Board 插入 PC 的 USB port,在 PC 上可看到一個 HOLTEK 的

磁碟機如下:

步驟二:執行 HT66FB582 USB PDF Data Logger 參數設定軟體,檔名 DataLog.exe。

步驟三:依需求在 AP 設定,並且按 AP 上設定鍵,將出現‟OK”訊息即完成,並且取出 Demo

Board。

步驟四:長按 Demo Board 上 START 鍵一秒即開始測試,LED 顯示方式如下。

● Alarm LED:按 START 鍵後,溫/濕度曾超過警戒值時即亮紅色,反之亮綠色,

測試時 5 秒鐘亮一次,每次亮 0.5 秒,按 STOP 鍵後五分鐘內都未動作即不在亮。

● Low BAT LED:按 START 鍵後,電池電量低於設定值即亮紅色,反之亮綠色,

測試時 5 秒鐘亮一次,每次亮 0.5 秒,按 STOP 鍵後五分鐘內都未動作即不在亮。

● Mode LED:在記錄狀態,即亮紅色,按 STOP 鍵後亮綠色,5 秒鐘亮一次,每

次亮 0.5 秒,按 STOP 鍵後五分鐘內都未動作即不在亮。

步驟五:使用者長按 Demo Board 上 STOP 鍵一秒或記錄空間全滿時,即完成測試。

步驟六:將 HT66FB582 Demo Board 插入 PC 的 USB port,並進入 HOLTEK 的磁碟機,可看

到 HOLTEK.PDF 的檔案,即為 HT66FB582 Demo Board 產生的 PDF 檔。

注意:每次測試完成後可不需再次重新設定 Data logger 參數,直接按 START 鍵後,即可用

目前在 Data Logger 的參數繼續測試,但注意啟始時間將會是原本開始測試時間。

附件

相關程式附件,敬請參閱 Holtek 官方網站的應用方案(Data Logger 應用)網頁資訊。

結論

HT66FB582 內建大 PROM & EEPROM,相當適合用於需要大記錄需求的產品上,如 Data

Logger 的產品,應用於 USB PDF Data Logger 產品,HT66FB582 提供產出 PDF 檔案的 LIB,

配合 48Kx16 & 16Kbyte EEPROM,在不外加其他儲存零件的情況下,就可產生一頁的 PDF

檔,在開發上能讓用戶更方便並節省外部元件使用。

HT66FB582 USB PDF Data Logger 應用範例

AN0451T V1.30 19 / 19 March 21, 2019

版本及修改資訊

日期 作者 Issue 發行、修訂說明

2017.02.14 王冠中 V1.00

2017.03.31 王冠中 V1.10

2017.05.23 王冠中 V1.20

2019.03.20 王冠中 V1.30。產品型號 HT6M6122 更改為 DHT12。

參考資料

參考文件 HT66FB582 Datasheet。

如需進一步瞭解,敬請瀏覽 Holtek 官方網站 http://www.holtek.com。

免責聲明

本網頁所載的所有資料、商標、圖片、連結及其他資料等(以下簡稱「資料」),只供參

考之用,盛群半導體股份有限公司(以下簡稱「本公司」)將會隨時更改資料,並由本公

司決定而不作另行通知。雖然本公司已盡力確保本網頁的資料準確性,但本公司並不保證

該等資料均為準確無誤。本公司不會對任何錯誤或遺漏承擔責任。

本公司不會對任何人士使用本網頁而引致任何損害(包括但不限於電腦病毒、系統固障、

資料損失)承擔任何賠償。本網頁可能會連結至其他機構所提供的網頁,但這些網頁並不

是由本公司所控制。本公司不對這些網頁所顯示的內容作出任何保證或承擔任何責任。

責任限制

在任何情況下,本公司並不須就任何人由於直接或間接進入或使用本網站,並就此內容上

或任何產品、資訊或服務,而招致的任何損失或損害負任何責任。

管轄法律

本免責聲明受中華民國法律約束,並接受中華民國法院的管轄。

免責聲明更新

本公司保留隨時更新本免責聲明的權利,任何更改於本網站發佈時,立即生效。