APP0 USB 實驗板使用手冊 A. APP0 簡介 APP0 是專為 Microchip PIC8F 0-Pin USB 系列所設計的實驗板, 出廠設定使用的 MCU 為 PIC8F0 APP0 的基本線路完全相容於 Microchip 原廠的 PICDEM FS USB 實驗板 (DM0) 如此的做法可以讓使用者直接使用 Microchip 在 Web Site 提供的所有範例程式而不須更改硬體線路的設計 Microchip USB 所有範例程式可以在以下的網址下載 URL : www.microchip.com/usb 然後選擇 Full Speed USB Solution APP0 除了 DM0 的基本線路外, 增加了以下的線路讓使用者可以做更多的實驗或評估其他的應用方式 LCD Module 使用 -bit Data 的介面連接方式與 PORTD 連接 與 LED 共用 RD0..RD, 但致能腳使用 RE CAN Controller ( MCP ) 使用 SPI 介面與 USB MCU 連接並使用 MCP 為介面 IC ICSP 的控制線路 可以使用 PIC8F0 來燒錄其他的 Microchip MCU 例如 PIC0F PICF 等 Low Pin Count Device MCLR 接腳的升壓控制 電壓回授 PGC & PGD 的控制
B. APP0 使用 MCHPFSUSB 範例程式時相關的元件及 Connector 以上的圖示僅標示了與 MCHPFSUSB USB 範例程式有關的元件及連接器以及各別 的用途, 主要目的在於避免太多不必要的說明困擾使用者 因為製做 APP0 時 非常匆促所以 APP0 的元件編號有部分並不完整或合理! 以下則對各主要的 元件及 Connector 做一說明 元件編號 功能說明 J 9V DC 輸入的接頭 JP USB Type-B 接頭, 用於連接至 PC 的 USB CON 連接 ICD Debugger/Programmer 的接頭 U PIC8F 0-Pin USB Device PIC8F0 JP 用以選則使用哪一組接腳做電源及 USB 連接的偵測, 也可用 DIP SW Y MHz 的震盪器 ( DM0 使用 0 MHz ) C VUSB.V 用的穩壓電容, 接至 PIC8F0 的 8 腳 LED..LED8 接至 PORTD 的 8 個 LED, LED to LED 用於 USB Demo 程式 S 接至 RB 的按鍵, 有 Pull High 的電路, 按下時為 Low S 接至 RB 的按鍵, 有 Pull High 的電路, 按下時為 Low S PIC8F0 的 RESET 按鍵 U TC77 使用 SPI 介面的溫度感測器 JP7..JP9 若要將 CPU 的 SPI 介面與 TC77 連接, 則需短路此 個 Jumper CON 連接 RS- 的 DB-9 接頭 PICtail 與 Microchip PICtail 介面信號相容的信號接頭 0-Pin 排針此 0x.mm 的排針無編號, 其功能為將 CPU 的 0 個接腳外拉
C. APP0 線路圖 C - 電源 ICD 介面 USB 信號及外部震盪器 S R K C 00P R 0 RB RB7 CON RJ- PC C 0.uF Y NC VDD 7 GND OUT 8 OSC Mhz OSC OSC/RA RA0 RA RA RA RA/ENVDD RA/SS RC0 RC RC/CCP RC RC RC RC RC7 7 8 U MCLR/Vpp/RE OSC/CLKI OSC/CLKO/RA RA0/AN0 RA/AN RA/AN/VREF-/CVREF RA/AN/VREF+ RA/T0CKI/COUT/RCV RA/AN/SS/HLVDIN/COUT RC0/TOSO/TCKI 7 RC/TOSI/CCP/UOE RC/CCP/PA VUSB RC/VM/D- RC/VP/D+ RC/TX/CK RC7/RX/DT/SDO RB7/KBI/PGD RB/KBI/PGC RB/KBI/PGM RB/AN/KBI0/CSSPP RB/AN9/CCP/VPO RB/AN8/INT/VMO RB/AN0/INT/SCK/SCL RB0/AN/INT0/FLT0/SDI/SDA RD7/SSP7/PD RD/SPP/PC RD/SPP/PB RD/SPP RD/SPP RD/SPP RD/SPP RD0/SPP0 RE0/AN/CKSPP RE/AN/CKSPP RE/AN7/OESPP VDD VDD VSS VSS 0 9 8 7 0 9 8 7 0 9 8 9 0 RB RB RB/ENVPP RB RB RB0 RD7 RD RD RD RD RD RD RD0 ICSP_PGC ICSP_PGD RE/LCDE C 0.uF C7 0.uF PIC8F0-I/P VBUS J CONN JACK D - + U7 LM780C/TO0 IN OUT GND VUSB C 70nF JP USB B_Type JP0 JUMPER P + C9 00uF/V RL.K JP RH JUMPER P.K R7 0K R8 VBUS.7K U NDSP D N87 R9 70 JP 7 8 HEADER X or DIPSW P D C 7uF/V R0 00K C 7uF/V R K N87 R 70 LED YELLOW LED0 LED GREEN LED9
C - LED 按鍵及 TC77 溫度 Sensor 的線路 R 0K R S 0 U MCLR OSC MCLR/Vpp/RE OSC/CLKI RB7/KBI/PGD RB/KBI/PGC RB/KBI/PGM RB/AN/KBI0/CSSPP RB/AN9/CCP/VPO RB/AN8/INT/VMO 0 9 8 7 RB7 RB RB RB RB/ENVPP RB R 0 R 0K S OSC/RA RA0 RA RA RA RA/ENVDD RA/SS RC0 RC RC/CCP RC RC RC RC RC7 7 7 8 OSC/CLKO/RA RA0/AN0 RA/AN RA/AN/VREF-/CVREF RA/AN/VREF+ RA/T0CKI/COUT/RCV RA/AN/SS/HLVDIN/COUT RC0/TOSO/TCKI RC/TOSI/CCP/UOE RC/CCP/PA VUSB RC/VM/D- RC/VP/D+ RC/TX/CK RC7/RX/DT/SDO RB/AN0/INT/SCK/SCL RB0/AN/INT0/FLT0/SDI/SDA RD7/SSP7/PD RD/SPP/PC RD/SPP/PB RD/SPP RD/SPP RD/SPP RD/SPP RD0/SPP0 RE0/AN/CKSPP RE/AN/CKSPP RE/AN7/OESPP VDD VDD VSS VSS 0 9 8 7 0 9 8 9 0 RB RB0 RD7 RD RD RD RD RD RD RD0 ICSP_PGC ICSP_PGD RE/LCDE C 0.uF C7 0.uF RD0 RD RD RD RD RD RD LED LED RED LED LED_RED LED LED RED LED LED RED LED LED ORANGE LED LED ORANGE LED7 7 8 9 RP C 70 PIC8F0-I/P RD7 LED ORANGE LED8 LED ORANGE JP7 U JUMPER P JP8 JUMPER P JP9 CS VDD SCK SIO VSS TC77_SOT C8 0.uF JUMPER P
C - RS- CAN LCD 與可變電阻的線路 R8 70 URX LED YELLOW R9 UTX 70 LED ORANGE RC7 RC RA RA JP 7 8 HEADER X R 0 R 0 R7 0 R8 0 u/v C C0 u/v C u/v 9 0 U ROUT RIN TIN TOUT ROUT RIN TIN TOUT V+ C+ V- C- C+ VDD VSS C- 8 7 C u/v C u/v R0 0 7 8 9 DB9 Female CON MAX R CANRX 70 LED ORANGE RC RC RC RA/SS RC7 RB0 RB RA/SS RA R7 70 CANTX LED YELLOW JP 7 8 HEADER X JP 7 8 9 0 HEADER X R 0K C 0.uF R8 0 OSCIN 7 8 7 U 7 TXD CANH RXD CANL VDD Vref 8 VSS Rs MCP R U TXCAN INT RXCAN RX0BF 0 RXBF SO SI CLKOUT SCK CS TX0RTS TXRTS RESET TXRTS 8 OSC VDD 9 OSC VSS R 0K 0K JP C9 0.uF JUMPER P RB JP JUMPER P R0 0 CON RJ PC CON RJ PC JP MPLEX P C 0.uF MCP0 R.7K R 0 RD RD0 RD JP CON 7 8 9 0 HEADER 8X R RD RD RD RE/LCDE R9 K 0K VR RA0 JUMPER P 00 /W
C - ICSP 的控制電路 ( 此電路區塊置於 LCD Module 下方 ) JP MOLEX P ICSP_PGC ICSP_PGD RA/ENVDD R 70 LED LED RED R.K Q A0 C 0.uF VDD_OUT L D C7 0uF/V 80uH N87 R.7K C8 7uF/V R7 00K Q A0 RC/CCP R.K Q C8 R.K R9 0K VPP_OUT RA JP JUMPER P R RB/ENVPP 0K Q C8 R.K C0 0.uF
C - 用於 PICtail 界面的連接器以及 0-Pin.mm 雙排排針的信號定義使用 PICtail Interface, 使用者可以連接被設計用於 PICtail 界面的其他附加電路板, 如 Microchip 原廠設計的 SD/MMC Card Readre(AC) 以及 TCP/IP PICtail Board(AC) 0-PIN CPU 擴展信號的 Connector 在 APP0 上雖無正式的元件編號, 但很好辨認, 其位置在 CPU 的右方, 為一 0*.mm 間距的雙排排針, 主要讓使用者可以使用此連接器來外加其他自己設計的線路與功能 RE/LCDE MCLR OSC OSC/RA RC7 RC RB7 RB RB RB RB RB RB RB0 PICtail Interface 7 8 9 0 7 8 9 0 7 8 HEADER X RA/SS RA/ENVDD RA RC RC RC RA RC0 RA RC0 RC RC/CCP MCLR RA0 RA RA RA RA/ENVDD RA/SS ICSP_PGC ICSP_PGD RE/LEDE OSC OSC/RA RC0 RC RC RC RD0 RD 0-PIN CPU 擴展信號 7 8 9 0 7 8 9 0 7 8 9 0 7 8 9 0 HEADER 0X RB7 RB RB RB RB/ENVPP RB RB RB0 RD7 RD RD RD RC7 RC RC RC RD RD
D. 使用 Microchip MCHPFSUSB Firmware 來開始 USB 產品設計 D- 在 Microchip Web 下載 MCHPFSUSB 程式套件 URL : www.microchip.com/usb 選則 Full Speed USB 您將看到有關 Microchip USB 產品的介紹, 將頁面向下卷動則會看見以下標示了可下載項目的連結, 你可以選擇下載其中任一種 Device Class 的 USB Firmware 來做為參考, 但建議選擇 Microchip Custom Driver 這個項目 壓縮檔大小約.MB, 內容包含了 DM0 出廠時的測試碼 HID CDC MSD 以及客制化類別 (Custom Class) 等的範例 ; 還有 Microchip 提供的 USB Driver, DLL 檔以及 PC 端的程式範例 目前網路下載的檔案名稱為 en08.zip, 解開後會有一執行檔 MCHPFSUSB_setup.exe, 直接安裝即可在 C 磁碟得到一個新的目錄 C:\MCHPFSUSB, 目錄名稱及位置是固定的! ** MCHPFSUSB 目錄的結構 :
D- MCHPFSUSB Firmware 套件及相關子目錄解說 MCHPFSUSB Firmware 套件包含了 PIC8F USB 系列的 USB 範常式式以及 PC 端的軟體工具和驅動程式, 最重要的兩個目錄分別為 fw" 及 pc" C:\MCHPFSUSB\fw 包含以下幾個重要的子目錄 : _factory_hex : 內含 DM0 出廠測試程式的.hex 檔案, 檔名為 picdemfsusb.hex 內容為 Boot + Demo 的組合, 也就是把 Bootloader 的程式與 Demo 程式合併以方便使用者測式 Custom class 的裝置 Boot : 內含 Bootloader 範例的 Source code, 使用 Microchip 的 USB Driver (mchpusb.sys) 來操作 Custom class device 配合 Microchip 提供的 PC demo 程式 ( pdfsusb.exe) 可以完成 Bootloader 的功能 Cdc : 內含 CDC class device 範例的 Source code,cdc class device 使用 Windows XP 內建的驅動程式來實現通信的功能, 本範例完成的是 COM Port 的功能並有一 INF 的子目錄內包含了安裝驅動程式所需的安裝資訊檔 - mchpcdc.inf Demo : 內含一個使用 Custom class device 為範例的 source code, 使用 Microchip 的 USB 驅動程式 mchpusb.sys 來操作 配合 Microchip 提供的 PC demo 程式 ( pdfsusb.exe) 可以做一個雙向資料傳輸的控制台 Hid : 內含一個 HID Mouse demo 的 source code, 此範例在程式中模擬一個做圓形運動的滑鼠, 操作時使用 Windows 內建的 HID Driver 就可以了 C:\MCHPFSUSB\pc 包含以下幾個重要的子目錄 : MCHPUSB Driver: 內含 Microchip 的 USB 驅動程式 mchpusb.sys Microchip 提供兩種不同模式的驅動程式並分別置於 debug 與 release 兩個子目錄中 一般性的操作使用 release 目錄中的驅動程式 mpusbapi: 此目錄包含 mpusbapi.dll,mpusbapi.dll 的 source code 以及使用的範例 mpusbapi.dll 的功用主要在提供使用者一些操作 mchpusb.sys 時所需的 APIs 可以簡化使用驅動程式 mchpusb.sys 操作 Custom class device 時所需的流程控制 pdfsusb: 內含一個完整的 PC 端 demo 程式, 可以讓 MCHPFSUSB 範常式式中的 Demo 和 Boot 兩個 demo 程式在此軟體的支援下得到功能的展現
D- 載入 picdemfsusb.hex 來開始使用 APP0 要測試並使用 APP0 最快的方式就是載入 MCHPFSUSB 套件所附的出廠測試程式, 步驟如下 : a. 執行 MPLAB IDE b. 使用 IDE 功能表的 Configure -> Select Device 選擇 PIC8F0 為要使用來開發的 MCU c. 使用 IDE 功能表的 File -> Import 來載入 picdemfsusb.hex, 位置在 C:\MCHPFSUSB\fw\_factory_hex\ d. 使用 IDE 功能表的 Configure -> Configuration Bit 來對 PIC8F0 內建 PLL 的輸入頻率做除 的調整 原因是 PIC8F0 的 9Mhz PLL 只接受 Mhz 的輸入, 所以 APP0 上的 Mhz 工作頻率必需被除 後才能以 Mhz 的頻率輸入至 9 Mhz PLL e. 使用 IDE 功能表的 Programmer -> Select Programmer -> MPLAB ICD 選擇使用 MPLAB ICD 為燒錄程式的工具 f. 將 APP0 與 MPLAB ICD 連接後將程式燒錄至 PIC8F0 g. 將 APP0 與 MPLAB ICD 分開使 APP0 可以 free run 或是使用功能表上 MPLAB ICD 專用的 Release from Reset 按鈕來使 APP0 可以離開 RESET 狀態而執行應用程式 ** 選取外加頻率除 後進入 9Mhz PLL
D- 使用 mchpusb.sys 做為裝置的驅動程式當 APP0 燒錄了 picdemfsusb.hex 並正確執行, 在將 APP0 以 USB 纜線插入 PC 後, 第一個要解決的問題就是當 PC 找到一個新的硬體裝置後該如何! 因為 demo 的程式使用的是 Custom class, 所以我們要引導 PC 找到 mchpusb.sys 以下是各步驟的圖示 a. 選擇從清單或特定位制安裝驅動程式 b. 將驅動程式的正確位址選定, 讓新增硬體精靈可以找到驅動程式 c. 當驅動程式安裝完成後在裝置管理員將看到一個其他裝置, 名稱為 : PIC8F0 Family Device
D- 使用 pdfsusb.exe 操作工作於 Demo mode 的 APP0 當 APP0 使用 picdemfsusb.exe 程式時, 其裝置的類別 PID 及 VID 都是符合 pdfsusb.exe 可操作元件的需求 此時若 APP0 正常工作, 則執行 pdfsusb.exe 可以做以下的操作 : a. 選擇 pdfsusb 要操做的模式為 Demo Mode", 然後在 Select PICDEM FS USB 的下拉選單中應會出現 USB demo Board - > PICDEM FS USB(Demo) b. 按下 Connect" 按鈕以便連接 USB Demo device c. APP0 所模擬的 USB Demo Device 此時會與 pdfsusb 程式做雙向溝通,VR 及 TC77 溫度 Sensor 的讀值會被送至 pdfsusb 顯示 使用者也可以使用 LED D LED D 兩個按鈕來操控 APP0 上的 LED
D- 使用 pdfsusb.exe 操作工作於 Bootloader mode 的 APP0 _factory_hex.hex 所含程式除了 Demo mode 程式外也包含了 Bootloader mode 的功能, 要進入 Bootloader mode 有一定的程序如下 : 按下 S 讓 APP0 進入 RESET 按下 S,S 是 Power-On 時用來判斷是否進入 Bootloader 的依據 持續按著 S, 然後將 S 放開讓 APP0 可以正常工作 當 APP0 正常工作後放開 S 若裝置已正確安裝, 則 APP0 進入 Bootloader mode 因為 APP0 執行 Bootloader mode 的程式時使用的是另一個 PID & VID 的組合, 所以 PC 會再度找到一個新裝置! 此時的處置方式和 Demo mode 時一樣 因為都是 Custom class 的裝置, 所以都使用 mchpusb.sys 為驅動程式 以下圖示為操作 APP0 於 Bootloader mode 的範例 : a. 選擇 pdfsusb 要操做的模式為 Bootloader Mode", 然後在 Select PICDEM FS USB 的下拉選單中應會出現 USB demo Board - > PICDEM FS USB(Boot) b. 使用 Load HEX File 功能鈕來選擇要載入的程式 (.hex) c. 由 Windows 的選單中選擇 MCHPFSUSB\fw\Hid\Mouse\_output 目錄中的 mchpusb.hex d. 使用 Program Device 功能鈕將 mchpusb.hex 載入至 APP0
e. 燒錄完成後可以使用 Execute 公能鈕或按下 APP0 的 S 來啟動新載入的程式 f. 因為此時 APP0 的 S 按鈕並未被按下, 當程式重新執行時不會進入 Bootloader mode, 所以此時應該有一個一直繞圈子的滑鼠在 PC 上執行 g. 若要重新進入 Bootloader 只要依照步驟 a 的方式重新進入即可 h. 若要回復原來的控制台程式, 只要再使用 Load HEX File 功能鈕重新載入 Demo 子目錄下的 mchpusb.hex 程式碼並透過 pdfsusb 重新 Program Device 即可, 目錄如下 : C:\MCHPFSUSB\fw\Demo\_output
附錄 A. PIC8F0 的腳位圖
附錄 B. TC-77 溫度 Sensor 的腳位圖
附錄 C. MCP CAN Transceiver 的腳位圖
附錄 D. MCP CAN Controller 的腳位圖
附錄 E. LCD Module 的 Command 及 Read/Write 的 Timing APP0 的 LCD Module 連接的腳位如下 : RS : RD RW : RD EN : RE DB..DB7 : RD0.. RD ( 使用 -bit mode 的控制方式 )