Download HY16F18X HYCON IP User`s Manual
Transcript
HY16F18X HYCON IP User’s Manual . © 2013 HYCON Technology Corp. www.hycontek.com APD-HY16F003-V03_EN HY16F18X HYCON IP User’s Manual Table of Contents 1. Document Description ..................................................................................................3 2. IC Description ................................................................................................................3 3. Digital IP (Timer A) .........................................................................................................6 4. Digital IP (Timer B).........................................................................................................8 5. Digital IP(Timer C)........................................................................................................10 6. Digital IP(WDT) .............................................................................................................12 7. Digital IP (PWM) ...........................................................................................................14 8. Analog IP(DAC) ............................................................................................................17 9. Analog IP (OPAMP) ......................................................................................................20 10. Analog IP (ADC) .........................................................................................................23 11. Analog IP (CMP) .........................................................................................................27 12. Communication IP (SPI) ............................................................................................30 13. Communication IP (UART) ........................................................................................34 14. Communication IP (I2C) .............................................................................................38 15. Peripheral IP(GPIO) ...................................................................................................42 16. Peripheral IP (Power).................................................................................................45 17. Digital IP(RTC)............................................................................................................49 . 18. Appendix Program.....................................................................................................52 19. Revision History ........................................................................................................52 © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 2 HY16F18X HYCON IP User’s Manual 1. Document Description HYCON IP(Intellectual Property) represents all internal IP of HYCON 32-bit MCU. This document aims at describing SOC IC internal digital, analog, communication and peripheral IP of HY16F18X Series, of which can be grouped into four categories: (1) Digial IPĈTimerA/TimerB/TimerC/WDT/PWM/Hardware RTC (2) Analog IPĈDAC/ADC/OPAMP/Analog CMP (3) Communication IPĈHardware 32-bit SPI/ Hardware UART/ Hardware I2C (4) Peripheral IPĈGPIO/Sleep/Idle 2. IC Description VPP R S T /N M I/P T 4 .0 PT2.4/XOUT PT2.5/XIN PT2.6/LXIN PT2.7/LXOUT VDD NC VDD3V CH CL VSS CP_I Basic description of each HY16F188 IP. UART 3 2 -b it S P I I2 C P T 2 .3 H a rd w a re RTC C lo c k S y s te m 1 6 -b it P W M T im e rA /B /C P T 2 .3 . P T 2 .1 P T 1 .0 D ebug M o d u le 8KB SRAM P T 1 .1 P T 2 .0 N8 3 2 -b it M C U 64K B F la s h P T 1 .2 Pow er M anagem ent P T 3 .0 P T 3 .1 P T 1 .3 W a tc h D o g R e s e t C o n tro l R a il-to -R a il OPAMP P T 1 .4 P T 3 .2 LN PG A B andgap 2 4 -b it A D C A n a lo g C o m p a ra to r C h a rg e P u m p 8 -b it D A C Touch K ey P T 1 .5 P T 3 .3 P T 1 .6 P T 3 .4 © 2013 HYCON Technology Corp www.hycontek.com PT3.6/OPO2 AIO3 AIO2 AIO1 AIO0 VDDA PT3.7/OPO1 EDIO P T 3 .5 ECK P T 1 .7 APD-HY16F003-V03_EN Page 3 HY16F18X HYCON IP User’s Manual (01) Adopting Andes Technology newest 32-bit CPU core, N801 processor. (02) Voltage operation range: 2.0~3.6V; temperature operation range: -40℃~85℃. (03) Support external 20MHz crystal oscillator or internal 20MHz RC oscillator, having multiple switch options of CPU operation clock source to enable the best power-efficient plan. (3.1) operation mode: 350uAƧ2MHz/2 (3.2) standby mode: 10uA@35KHz/2 (3.3) sleep mode: 2.5uA (04) Program memory: 64K-Byte Flash ROM (05) Data memory: 08K-Byte SRAM (06) BOR and WDT function to prevent CPU from crashing (07) 24-bit high resolution Σ∆ADC (7.1) Built-in PGA (Programmable Gain Amplifier), 128 times max. (7.2) Built-in temperature sensor, TPS (08) Built-in 1 OPA and 1 analog comparator (16 steps programmable resistor) (09) Built-in hardware 8-bit DAC (10) 16-bit Timer A (11) 16-bit Timer B module has PWM waveform generating function (12) 16-bit Timer C module has digital Capture/Compare function (13) Hardware serial communication 32-bit SPI/I2C/UART module (14) Hardware RTC clock function module (15) Hardware Touch KEY function module . ※ Interrupt Vice Program Declaration No. Interrupt Vice Description Program Declaration HW0 void HW0_ISR(void) Communication IP HW1 void HW1_ISR(void) Digital IP HW2 void HW2_ISR(void) ADC IP HW3 void HW3_ISR(void) CMP IP HW4 void HW4_ISR(void) PT1 IP HW5 void HW5_ISR(void) PT2 IP 01 02 03 04 05 06 Digital IP TimerA TimerB TimerC WDT PWM Hardware RTC © 2013 HYCON Technology Corp www.hycontek.com Analog IP 8-bit DAC R2R OPAMP 24-bit SD ADC Analog CMP ů ů Remark UART/I2C/32-bit SPI Timer A/B/C & WDT/RTC SD 24-bit ADC Analog CMP/OPAMP PT1.0~PT1.7 PT2.0~PT2.7 Communication IP Hardware 32-bit SPI Hardware UART Hardware I2C ů ů ů Peripheral IP GPIO Sleep Mode Idle Mode ů ů ů APD-HY16F003-V03_EN Page 4 HY16F18X HYCON IP User’s Manual Timer C 0 TCI1_1 TCI2_1 TCI1_2 TCI2_2 TCI1_3 TCI2_3 TCI1_4 TCI2_4 TCI1_5 TCI2_5 TCI1_6 TCI2_6 TCI1_7 TCI2_7 TCI1_8 TCI2_8 SPI 1 CS_1 CK_1 MISO_1 MOSI_1 CS_2 CK_2 MISO_2 MOSI_2 CS_3 CK_3 MISO_3 MOSI_3 CS_4 CK_4 MISO_4 MOSI_4 IIC 2 SCL_1 SDA_1 SCL_2 SDA_2 SCL_3 SDA_3 SCL_4 SDA_4 SCL_5 SDA_5 SCL_6 SDA_6 SCL_7 SDA_7 SCL_8 SDA_8 UART 3 TX_1 RX_1 TX_2 RX_2 TX_3 RX_3 TX_4 RX_4 TX_5 RX_5 TX_6 RX_6 TX_7 RX_7 TX_8 RX_8 CMP 4 CH1 CH2 CH3 CL1 CL2 CL3 CL4 CMPO1 OPO1 OPO2 . PT3.3 PT3.4 PT3.5 NC PT3.2 PT3.0 PT3.1 PT2.0 PT2.1 25 37 26 PT2.4 NC 24 38 27 PT2.5 REFO/PT3.6 23 39 28 PT2.6 AIO3 22 40 PT2.2 30 29 PT2.7 AIO2 21 41 31 VDD AIO1 20 42 32 NC AIO0 19 43 PT2.3 34 33 VDD3 VDDA 18 44 35 CP_O NC 17 CH NC 16 CL PT3.7 15 CP_I EDIO 14 VSS ECK 13 © 2013 HYCON Technology Corp www.hycontek.com PWM 6 PWM0_1 PWM1_1 PWM0_2 PWM1_2 PWM0_3 PWM1_3 PWM0_4 PWM1_4 PWM0_5 PWM1_5 PWM0_6 PWM1_6 PWM0_7 PWM1_7 PWM0_8 PWM1_8 DAO AIO4 AIO5 AIO6 AIO7 REFO OPO 9 10 11 NC 8 PT1.7 PT1.6 7 PT1.5 6 PT1.4 5 PT1.3 4 PT1.2 PT1.1 3 PT1.0 2 PT4.0/RST VPP NC HY16F188 LQFP48 1 Analog 5 AIO0 AIO1 AIO2 AIO3 45 36 NC RST/NMI 46 LSXT1 LSXT2 HSXT1 HSXT2 Interrupt 0 INT1.0 INT1.1 INT1.2 INT1.3 INT1.4 INT1.5 INT1.6 INT1.7 INT2.0 INT2.1 INT2.2 INT2.3 INT2.4 INT2.5 INT2.6 INT2.7 47 OSC 0 48 GPIO Port Priority PT1.0 PT1.1 PT1.2 PT1.3 PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PT2.2 PT2.3 PT2.4 PT2.5 PT2.6 PT2.7 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 PT3.6 PT3.7 PT4.0 AIO0 AIO1 AIO2 AIO3 12 APD-HY16F003-V03_EN Page 5 HY16F18X HYCON IP User’s Manual 3. Digital IP (Timer A) 3.1 Example Name Timer A usage and description 3.2 Example Description (1) Using TimerA to interrupt (2) Every time TimerA interrupted, IO toggled. Ex: Before interrupt: 0X5, after interrupt: 0XA 3.3 System Setup TMACLKS ENTMACLK ENHOSC_EXT Ext OSC_HS 4~20MHz XIN(PT2.6) XOUT(PT2.7) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz 00 01 10 11 HOSC_S OSC_HSXT 1 HS_S 0 1 ENTMA . CLR_TMA TMACLK LPO 32KHz PT2.0 PT2.1 PT2.2 PT2.3 OSC_LSXT 1 0 LS_S TMA stop Timer A Timer A Sleep( ) LOSC_S Ext OSC_LS 32.768KHz TMACLK ÷32 OSC_HSRC ENLOSC_EXT LXOUT(PT2.5) 0 LS_CK HS_CK ENHAO HAOTR[7:0] HAO_SEL[1:0] LXIN(PT2.4) HS_CK LS_CK OSC_LSRC TMAS[3:0] TMAR[15:0] 0000 TMACLK÷2 0001 TMACLK÷4 0010 TMACLK÷8 0011 TMACLK÷16 0100 TMACLK÷32 0101 TMACLK÷64 0110 TMACLK÷128 0111 TMACLK÷256 1000 TMACLK÷512 1001 TMACLK÷1024 1010 TMACLK÷2048 1011 TMACLK÷4096 1100 TMACLK÷8192 1101 TMACLK÷16384 1110 TMACLK÷32768 1111 TMACLK÷65536 TMAIF interrupt (1) Default operation frequency of clock source is 2MHz (high speed internal oscillator), up to [email protected] max.. (2) Adopting HYCON C library, DrvTMA_Open(X,Y) can start TimerA IP and Timer A Clock. X represents TMAR frequency divider, select 15 is divided by 65536. Y represents selecting high speed or low speed CPU Clock to enter Timer A IP (3) HYCON C library DrvTIMER_EnableInt(E_TMA), meaning to enable Timer A interrupt. (4) HYCON C library DrvTIMER_ClearIntFlag(E_TMA), meaning to clear Timer A interrupt flag. (5) Timer A/B/C and WDT is classified as HW1 interrupt, using form is void HW1_ISR(void). © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 6 HY16F18X HYCON IP User’s Manual 3.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag TimerA Setup IO Toggle Waiting Interrupt Back to Main Program 3.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 #include "HY16F18X.h" unsigned int i; . int main(void) { i=0X05; DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT); DrvGPIO_SetPortBits(E_PT2,i); //PT2_0~3 Set Output //PT2 Output i=0X05 DrvTMA_Open(15,0); //Timer A Overflow //15 : taclk/65536/32;TMRDV=÷32 // 0 : HS_CK DrvTIMER_ClearIntFlag(E_TMA); DrvTIMER_EnableInt(E_TMA); //Clear Timer A interrupt flag //Timer A interrupt enable SYS_EnableGIE(7); //Enable GIE while(1); //Wait for Interrupt } void HW1_ISR(void) { DrvTIMER_ClearIntFlag(E_TMA); i=i^0XF; DrvGPIO_SetPortBits(E_PT2,i); } © 2013 HYCON Technology Corp www.hycontek.com //Clear TMA interrupt flag //i XOR 0XF //PT2 Output i=0X0A~0X05 APD-HY16F003-V03_EN Page 7 HY16F18X HYCON IP User’s Manual 4. Digital IP (Timer B) 4.1 Example Name Timer B usage and description 4.2 Example Description (1) Using TimerB interrupt (2) Every time TimerB interrupted, IO toggled. Ex. Before interrupt: 0X5, after interrupt: 0XA 4.3 System Setup TMB_MODE[1:0] PT2.0 00 01 10 11 If TMBR[15:0]=TMBC0[15:0] Then TMBIF=1 PT2.1 IF TMBR[15:0]=TMBC0[15:0] and TMBR[15:0]=0 Then TMBIF=1 If TMBR[15:8] and TMBR[7:0]=TMBC0[7:0] Then TMBIF=1 PT2.2 If TMBR[7:0]=TMBC0[7:0] Then TMBIF=1, TMBR[15:8]+1 Timer B ENTMB CLR_TMB PT2.3 TMBR[15:8] TMBR[7:0] TMBCLK ENLOSC_EXT LOSC_S LXIN(PT2.4) Ext OSC_LS 32.768KHz LXOUT(PT2.5) OSC_LSXT 1 0 LPO 32KHz LS_S LS_CK . Logic High CMPO OPODIG CPI1 Comparator 00 01 10 11 TMB Interrupt TMBIF TMBC0[15:0] TMBC1_PWM[15:0] TMB_TRG[1:0] OSC_LSRC TMBC2_PWM[15:0] ENHOSC_EXT Ext OSC_HS 4~20MHz XIN(PT2.6) XOUT(PT2.7) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz 00 01 10 11 ENHAO HAOTR[7:0] HAO_SEL[1:0] HOSC_S OSC_HSXT 1 HS_S 0 HS_CK HS_CK LS_CK 00(÷1) 01(÷2) 10(÷4) 11(÷8) 0 1 TMBCLK Timer B Timer C OSC_HSRC TMBCLKS ENTMBCLK TMBCLK_PRE[1:0] (1) Adopting HYCON C library, DrvTMBC_Clk_Source(X,Y) can select Timer B clock source. X is to select high/low speed. X=0 is HS_CK, Y is to select frequency divider. If Y=3, it means Timer B IP clock source frequency divides 8. (2) Library DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF): TimerB IP setup including Mode select, enabling Timer B and Timer B counter setup. (3) HYCON C library DrvTIMER_EnableInt(E_TMB): to enableTimer B interrupt. (4) HYCON C library DrvTIMER_ClearIntFlag(E_TMB): to clear TimerB interrupt flag. (5) Timer A/B/C and WDT is classified as HW1interrupt, using form is void HW1_ISR(void). © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 8 HY16F18X HYCON IP User’s Manual 4.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag TimerB Setup IO Toggle Waiting Interrupt Back to Main Program 4.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include "HY16F18X.h" unsigned int i; int main(void) . { i=0X05; DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT); DrvGPIO_SetPortBits(E_PT2,i); DrvTMBC_Clk_Source(0,3); //PT2_0~3 Set Output //PT2 Output i=0X05 //Timer B Prescaler 1 //0: HS_CK,clock source. //3: clock divider.÷8 DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF); //Timer B overflow 0XFFFF DrvTIMER_ClearIntFlag(E_TMB); //Clear TMB interrupt flag DrvTIMER_EnableInt(E_TMB); //Timer B interrupt enable SYS_EnableGIE(7); //Enable GIE while(1); //Wait for Interrupt } void HW1_ISR(void) { DrvTIMER_ClearIntFlag(E_TMB); i=i^0XF; DrvGPIO_SetPortBits(E_PT2,i); } © 2013 HYCON Technology Corp www.hycontek.com //Clear TMB interrupt flag //i XOR 0XF //PT2 Output i=0X0A~0X05 APD-HY16F003-V03_EN Page 9 HY16F18X HYCON IP User’s Manual 5. Digital IP(Timer C) 5.1Example Name Timer C usage and description 5.2 Example Description (1) Using TimerC to interrupt (2) Every time TimerC interrupted, IO toggled. Ex. Before interrupt: 0X5, after interrupt: 0XA. 5.3 System Setup ENTMBCLK TMBCLK_PRE[1:0] ENLOSC_EXT TMBCLKS LOSC_S LXIN(PT2.4) Ext OSC_LS 32.768KHz LXOUT(PT2.5) LPO 32KHz OSC_LSXT 1 0 LS_CK HS_CK LS_CK LS_S Ext OSC_HS 4~20MHz XOUT(PT2.7) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz 00 01 10 11 HOSC_S OSC_HSXT 1 TMBCLK Timer B Timer C OSC_LSRC ENHOSC_EXT XIN(PT2.6) 00(÷1) 01(÷2) 10(÷4) 11(÷8) 0 . HS_CK 1 HS_S 0 OSC_HSRC CPI1_PRE[3:0] ENHAO HAOTR[7:0] HAO_SEL[1:0] Timer C 0000(/1) 0001(/2) 0010(/4) CPI1_SEL[1:0] 0011(/8) 0100(/16) CPI1_TRG 0101(/32) CMPO OPODIG LS_CK TMCI1 00 01 10 11 0110(/64) 0111(/128) 1 1000(/256) 0 TMC1IF ENTMC 1001(/512) 1010(/1024) TMCR1[15:0] 1011(/2048) 1100(/4096) PT2.0 PT2.1 1101(/8192) TMBR[15:0] 1110(/16384) 1111(/32768) PT2.2 CPI2_SEL PT2.3 TMCI2 1 0 TMCR2[15:0] CPI2_TRG 1 0 TMC2IF (1) DrvTMB_Open( ) will enable Timer B. (2) DrvCapture1_Open( ); configuring Timer C 0. (3) DrvCapture2_Open( ); condiguring Timer C1. © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 10 HY16F18X HYCON IP User’s Manual 5.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag TimerC Setup IO Toggle Waiting Interrupt Back to Main Program 5.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include "HY16F18X.h" unsigned int i; int main(void) { . i=0X05; DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT); DrvGPIO_SetPortBits(E_PT2,i); DrvTMBC_Clk_Source(0,0); //PT2_0~3 Set Output //PT2 Output i=0X05 //Timer B Prescaler 1 //0: HS_CK,clock source. //0: clock divider.÷1 DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF); //Timer B overflow 0XFFFF DrvCapture1_Open(2,14,1); //TimerC0 use as Capture 1 //input source selection //2:LS_CK //14:÷16384 1:Positive-edge trigger DrvCapture2_Open(1,1); //TimerC1 use as Capture 2 // input source selection DrvTIMER_ClearIntFlag(E_TMC0); DrvTIMER_ClearIntFlag(E_TMC1); //Clear TMC0 interrupt flag //Clear TMC1 interrupt flag DrvTIMER_EnableInt(E_TMC0); DrvTIMER_EnableInt(E_TMC1); //TimerC0 interrupt enable //TimerC1 interrupt enable SYS_EnableGIE(7); //Enable GIE while(1); //Wait for Interrupt } © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 11 HY16F18X HYCON IP User’s Manual 37 38 void HW1_ISR(void) 39 { 40 DrvTIMER_ClearIntFlag(E_TMC0); 41 DrvTIMER_ClearIntFlag(E_TMC1); 42 i=i^0XF; 43 DrvGPIO_SetPortBits(E_PT2,i); 44 } 45 //Clear TMC0 interrupt flag //Clear TMC1 interrupt flag //i XOR 0XF //PT2 Output i=0X0A~0X05 6. Digital IP(WDT) 6.1 Example Name WDT usage and description 6.2 Example Description (1) Using WDT interrupt (2) Every time WDT interrupted, IO toggled. Ex. Before interrupt: 0X5, after interrupt: 0XA . 6.3 System Setup LPO 32KHz CLR_WDT Reset signal ENWDT LPO PT2.0 ÷256 WDTCLK FWT WDTCLK WDT ENWCLK PT2.1 PT2.2 PT2.3 WDT_SEL[2:0] WDTR[14:0] FWT÷2 000 FWT÷8 001 FWT÷32 010 FWT÷128 011 FWT÷512 100 FWT÷2048 101 FWT÷8192 110 FWT÷32768 111 Main code Reset WDT Interrupt (WDTIF) IDLE( ) (1) DrvWDT_Open( ) will enable WDT (2) DrvTIMER_EnableInt(E_WDT): enable WDT interrupt (3) DrvTIMER_ClearIntFlag(E_WDT): clear WDT interrupt flag © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 12 HY16F18X HYCON IP User’s Manual 6.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag WDT Setup IO Toggle Waiting Interrupt Back to Main Program 6.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 #include "HY16F18X.h" unsigned int i; int main(void) . { i=0X05; DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT); DrvGPIO_SetPortBits(E_PT2,i); //PT2_0~3 Set Output //PT2 Output i=0X05 DrvWDT_Open(E_IRQ,E_PRE_SCALER_D32); //WDT IRQ open prescaler 32 DrvWDT_ClearWDT(); DrvTIMER_EnableInt(E_WDT); //Clear WDT interrupt flag //WDT interrupt enable SYS_EnableGIE(7); //Enable GIE while(1); //Wait for Interrupt } void HW1_ISR(void) { DrvTIMER_ClearIntFlag(E_WDT); i=i^0XF; DrvGPIO_SetPortBits(E_PT2,i); } © 2013 HYCON Technology Corp www.hycontek.com //Clear WDT interrupt flag //i XOR 0XF //PT2 Output i=0X0A~0X05 APD-HY16F003-V03_EN Page 13 HY16F18X HYCON IP User’s Manual 7. Digital IP (PWM) 7.1Example Name PWM output 7.2 Example Description PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 NC PT2.1 PT2.3 PT2.0 AIO0 VDDA NC NC PT3.7 EDIO ECK NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 PT1.2 37 38 39 40 41 NC 2 42 PT2.2 PT4.0/RST 3 VPP PT1.0 4 NC PT1.1 5 43 HY16F188 6 44 PWM 7 45 AIO3 . 8 46 REFO/PT3.6 AIO1 9 47 NC AIO2 11 01 1 © 2013 HYCON Technology Corp www.hycontek.com PWM PWM0_1 PWM1_1 PWM0_2 PWM1_2 PWM0_3 PWM1_3 PWM0_4 PWM1_4 PWM0_5 PWM1_5 PWM0_6 PWM1_6 PWM0_7 PWM1_7 PWM0_8 PWM1_8 21 VSS 25 13 CP_I 26 14 CL 27 15 CH 28 16 CP_O 29 17 VDD3 30 18 NC 31 19 VDD IO PT1.0 PT1.1 PT1.2 PT1.3 PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PT2.2 PT2.3 PT2.4 PT2.5 PT2.6 PT2.7 32 21 20 PT2.7 34 33 22 PT2.6 35 23 PT2.5 36 24 PT2.4 48 (1) PWM register setup and IO select. (2) PWM waveform can be observed at PT2.0 and PT2.1. APD-HY16F003-V03_EN Page 14 HY16F18X HYCON IP User’s Manual 7.3 System Setup TMB_MODE[1:0] ENTMB 00 01 10 11 If TMBR[15:0]=TMBC0[15:0] Then TMBIF=1 If TMBR[15:0]=TMBC0[15:0] and TMBR[15:0]=0 Then TMBIF=1 If TMBR[15:8] and TMBR[7:0]=TMBC0[7:0] Then TMBIF=1 If TMBR[7:0]=TMBC0[7:0] Then TMBIF=1, TMBR[15:8]+1 TMBCLKS HS_CK LS_CK TMBR[15:8] TMBR[7:0] TMBCLK_PRE[1:0] 00(÷1) 01(÷2) 10(÷4) 11(÷8) 0 1 CLR_TMB TMB Interrupt TMBCLK TMBCLK Timer B Timer C Logic High CMPO OPODIG CPI1 Comparator 00 01 10 11 TMBC0[15:0] TMBC1_PWM[15:0] TMB_TRG[1:0] ENTMBCLK TMBIF TMBC2_PWM[15:0] PT1.0 PT1.1 PWM0_MODE[2:0] Ext OSC_HS 4~20MHz XIN(PT2.6) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz 00 01 10 11 PT1.3 ENOUTn.x ENHOSC_EXT XOUT(PT2.7) PT1.2 PWM_PORT[2:0] HOSC_S OSC_HSXT 1 HS_S 0 HS_CK OSC_HSRC PWMA PWMB PWMC PWMD PWME PWMF PWMG PWMG 000 001 010 011 100 101 110 111 PWM0 PWM0_INV 1 0 ENPWM0_PT 000 001 010 011 100 101 110 111 PT1.0 PT1.2 PT1.4 PT1.6 PT2.0 PT2.2 PT2.4 PT2.6 ENHAO HAOTR[7:0] HAO_SEL[1:0] PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PWM1_MODE[2:0] ENLOSC_EXT LXIN(PT2.4) LXOUT(PT2.5) PWM_PORT[2:0] LOSC_S Ext OSC_LS 32.768KHz LPO 32KHz OSC_LSXT 1 0 OSC_LSRC LS_S PT2.2 ENOUTn.x LS_CK PWMA PWMB PWMC PWMD PWME PWMF PWMG PWMG 000 001 010 011 100 101 110 111 PWM1 . PWM1_INV 1 0 ENPWM1_PT 000 001 010 011 100 101 110 111 PT2.3 PT1.1 PT1.3 PT1.5 PT1.7 PT2.1 PT2.3 PT2.5 PT2.7 PT2.4 PT2.5 PT2.6 PT2.7 7.4 Software Flow Program Start Initializing Setup PWM Setup PWM Waveform Output © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 15 HY16F18X HYCON IP User’s Manual 7.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include "HY16F18X.h" int main(void) { SYS_DisableGIE(); DrvGPIO_Open(E_PT2,0X03,E_IO_OUTPUT); //PT2_0~1 Set Output DrvCLOCK_EnableHighOSC(E_EXTERNAL); //Select HSXT 4MHz DrvTMBC_Clk_Source(0,0); //TimerB Clock enable prescaler 1 DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF); //TimerB overflow 0XFFFF //PWM period 0XFFFF DrvPWM0_Open(0,1,4); //0:PWM mode //1:Normal 0:inverse //4:Select PT2.0 PT2.1 as PWM DrvPWM1_Open(1,1,4); //1:PWM mode //1:Normal 0:inverse //4:Select PT2.0 PT2.1 as PWM . DrvPWM_CountCondition(0X7FFF,0X3FFF); //pwm0 duty 0X7FFF //pwm1 duty 0X3FFF while(1); //While Loop } © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 16 HY16F18X HYCON IP User’s Manual 8. Analog IP(DAC) 8.1 Example Name DAC usage and description 8.2 Example Description (1) Setup analog voltage nad digital voltage (2) Connecting REFO to DAC positive end. (3) DAC negative end selects VSS, it will pass through AIO4 of OP (Selecting both AIO4 and DAC) (4) It is through proper DAC network setup can AIO4 output end measures 256-tier DAC output. (5) Or adopting DAC specialized analog votlage output pin, PT3.1. DMM PT3.3 PT3.4 PT3.5 NC PT3.2 PT3.0 PT3.1 PT2.0 PT2.1 PT2.3 PT2.2 NC PT3.7 EDIO ECK 1 © 2013 HYCON Technology Corp www.hycontek.com NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 PT1.2 PT1.1 PT1.0 PT4.0/RST VPP NC HY16F188 2 37 NC 8-bit DAC 3 38 NC 4 39 VDDA 5 40 255/256 6 41 0XFF 7 42 AIO0 8 43 254/256 9 44 AIO1 0XFE 01 45 AIO2 OPPS 11 46 AIO3 21 47 REFO/PT3.6 13 VSS 2/256 NC 14 CP_I 0X01 25 15 CL 1/256 26 16 CH 0X00 27 17 CP_O DAO . 28 18 VDD3 DABIT [7:0] 30 29 19 NC 31 20 VDD 32 21 PT2.7 34 33 22 PT2.6 35 23 PT2.5 36 24 PT2.4 48 2.012V APD-HY16F003-V03_EN Page 17 HY16F18X HYCON IP User’s Manual 8.3 System Setup DAPS[1:0] VDD3 000 VDDA 001 REFO 010 OPO 011 AIO6 ENDA DA_Vrefp DABIT[7:0] DAOE 100 DABIT[7:0] DABIT 0X00 1/256 0X01 2/256 0XFE 254/256 0XFF 255/256 256 DAO Mux PT3.1 VSS 00 REFO 01 OPO 10 AIO7 11 DA_Vrefn DANS[1:0] . 8.4 Software Flow Program Start Initializing Setup DAC Setup DAC Voltage Output © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 18 HY16F18X HYCON IP User’s Manual 8.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 #include "HY16F18X.h" int main(void) { DrvPMU_VDDA_LDO_Ctrl(E_LDO); DrvPMU_VDDA_Voltage(E_VDDA3_0); //LDO ON //VDDA=3.0 //DrvOP_PInput(0X06); //DAO output with AIO4(PIN29) DrvDAC_Enable(); DrvDAC_EnableOutput(); DrvDAC_Open(E_DAC_VDDA,E_DAC_VSSA,0X80); dac_04=0XFF00+0X80; pio_28=0X02020000; //DAC IP enable //DAC output enable //DA_Vrefp= VDDA //DA_Vrefn= VSS //DAC BIT 0X80 //DAO output with PT3.1 while(1); //while loop } . © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 19 HY16F18X HYCON IP User’s Manual 9. Analog IP (OPAMP) 9.1 Example Name OPAMP usage and configuration 9.2 Example Description PT3.1 PT3.2 PT3.3 PT3.4 NC PT3.0 PT3.5 PT2.0 AIO0 VDDA NC NC PT3.7 EDIO ECK DMM 1.19V NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 PT1.2 PT1.1 37 38 PT2.1 PT1.0 VPP 2 NC PT4.0/RST 3 39 PT2.2 4 40 PT2.3 5 41 NC 6 1 © 2013 HYCON Technology Corp www.hycontek.com 7 42 AIO1 - HY16F188 8 43 AIO2 R2ROP 9 44 AIO3 + 01 45 REFO/PT3.6 . 11 46 NC 21 47 25 13 VSS 26 14 CP_I 27 15 CL 28 16 CH 29 17 CP_O 30 18 VDD3 31 19 NC 32 20 VDD 33 21 PT2.7 34 22 PT2.6 35 23 PT2.5 36 24 PT2.4 48 (1) Open analog voltage, REFO=1.2V (2) Connect REFO to OPAMP positive end, V+ (3) Select negative end of OPAMP, OPOI, it will be connected to OPA Unit Gain Buffer at this time. (4) Through proper OPAMP network setup, OPO outout end can measure REFO=1.2V. APD-HY16F003-V03_EN Page 20 HY16F18X HYCON IP User’s Manual 9.3 System Setup AIO2 AIO4 DAO REFO OPPS[0] OPOE OPPS[1] OPO OPDFR OPPS[3] OPOR OPOS ENOP + R2ROP - AIO3 OPDEN OPPS[2] 0 2ms Delay OPOI OPOIF 1 0 1 OPOD 0 OPO1/OPO2 1 OPNS[0] AIO5 OPNS[1] DAO OPNS[2] OPO OPNS[3] OPOI OPNS[4] OPOC OPNS[5] CHPCK OPCS OPOC 1 0 OPOI VSSA 10pF 9.4 Software Flow . Program Start Initializing Setup OPA Setup OPA Voltage Output © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 21 HY16F18X HYCON IP User’s Manual 9.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 #include "HY16F18X.h" int main(void) { DrvPMU_VDDA_LDO_Ctrl(E_LDO); DrvPMU_VDDA_Voltage(E_VDDA3_0); DrvPMU_REFO_Enable(); //LDO ON //VDDA=3.0 //REFO ON DrvOP_Open(); DrvOP_PInput(0X08); DrvOP_NInput(0X10); //OPA positive reference input selection REFO //OPA negative reference input selection OPOI DrvOP_OPOoutEnable(); //OP OoutEnable while(1); //while loop } . © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 22 HY16F18X HYCON IP User’s Manual 10. Analog IP (ADC) 10.1 Example Name ADC interrupt usage 10.2 Example Description NC PT3.4 PT3.5 PT3.3 PT3.2 PT3.1 PT3.0 PT2.1 PT2.2 PT2.0 AIO0 VDDA NC NC PT3.7 EDIO ECK NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 PT1.2 PT1.1 37 38 39 40 PT2.3 2 41 NC VPP PT4.0/RST 3 NC PT1.0 4 42 HY16F188 5 43 AIO1 REFO 6 44 AIO1 7 45 VSS AIO2 . 8 46 ADC 9 47 AIO3 AIO0 11 01 1 © 2013 HYCON Technology Corp www.hycontek.com REFO/PT3.6 21 VSS NC 13 CP_I 25 14 CL 26 15 CH 27 16 CP_O 28 17 VDD3 30 29 18 NC 31 19 VDD 32 21 20 PT2.7 34 33 22 PT2.6 35 23 PT2.5 36 24 PT2.4 48 (1) It is through ADC related setup, can ADC realize interrupt function. (2) Set up ADC power, VDDA and REFO. (3) Set up ADC clock source, ADCCLK. (2) ADC Vin is AIO0-AIO1. (3) ADC Vref is REFO to VSS. APD-HY16F003-V03_EN Page 23 HY16F18X HYCON IP User’s Manual 10.3 System Setup VDD33V ENHOSC_EXT VDDA_MODE[1:0] 01 VDD33V 10 11 Weak Pull Down VDDAX[1:0] 00 2.4V 01 2.7V 10 3.0V 11 3.3V Coarse Band gap Reference Bias & BGR Ext OSC_HS 4~20MHz XOUT(PT2.7) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz ENBGR ACM_S 0 INH[3:0] ΣΔAD + VR:x1,x? - SIINL © 2013 HYCON Technology Corp www.hycontek.com 1bit SI:x1,x2,xR,x4 ADC ADCCLKO ENCOMB OSR[3:0] VR+ ADO[31:0] VRGIE_HW2 00 01 10 11 VSSA AIO3 NA VRL 00 01 10 11 VRH . 32bit ADCIF Interrupt VR_SHORT VRH[1:0] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ADCCLK SI+ VDDA AIO2 NA REFO AIO1 AIO2 AIO3 AIO4 REFO OPO DAO VSSA TPSP2 TPSN2 R R R R R R APB 3 AIO3 CPU 0 ÷1 1 ÷2 ENADCCLK,ADCCLK_PH DCSET[3:0] VRGN ADGN[1:0] *ENCHP PGAGN[2:0] PGA AIO2 ADC off,x8,x16,x32 INL[3:0] Pre-Scale ÷6,÷12,÷30, ÷60 VDDA ENADC ADCCLK INH CPUCLK_PRE CPUCLK 0 1 ADCCLK_PRE[1:0] HS_CK VI_SHORT AIO1 HS_CK LS_CK OSC_HSRC ENREFO 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 CPUCLKS HS_CK APBCLK Comb Filter AIO0 AIO1 AIO2 AIO3 AIO4 REFO OPO DAO VDDA TPSP1 TPSN1 R R R R R R 1 HS_S 0 ENHAO HAOTR[7:0] HAO_SEL[1:0] 1 REFO PT3.6 00 01 10 11 HOSC_S OSC_HSXT ADCIF ENADC_INT Interrupt Signal HW2 Interrupt Vector VRL[1:0] High Z XIN(PT2.6) REFO VDDA 00 VDDAX[1:0] APD-HY16F003-V03_EN Page 24 HY16F18X HYCON IP User’s Manual 10.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag ADC Setup Read ADC Waiting for Interrupt Back to Main Program 10.5 Program Description 00 01 02 03 04 05 06 07 08 09 #include "HY16F18X.h" . unsigned int ADCData; #define Disable 0 #define Enable 1 int main(void) { 10 //Set ADC input pin 11 12 DrvADC_SetADCInputChannel(ADC_Input_AIO0,ADC_Input_AIO1); 13 14 DrvADC_InputSwitch(OPEN); 15 DrvADC_RefInputShort(OPEN); 16 17 DrvADC_Gain(ADC_PGA_Disable,ADC_PGA_Disable); 18 19 DrvADC_DCoffset(0); 20 DrvADC_RefVoltage(REF_BUFFER_OUT,VSSA); 21 22 DrvADC_FullRefRange(0); 23 24 © 2013 HYCON Technology Corp www.hycontek.com //Set ADC positive input AIO0 //Set ADC negative input AIO1 //ADC input short control //ADC reference short control //Input signal gain //DC offset //ADC reference voltage. //ADC full reference range select //0: Full reference range input //1: 1/2 reference range input APD-HY16F003-V03_EN Page 25 HY16F18X HYCON IP User’s Manual 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 //ADC Speed DrvADC_OSR(1); DrvADC_CombFilter(Enable); //1 : OSR=16384 //Enable OSR DrvADC_ClkEnable(0,1); //Setting ADC CLOCK //ADCK=HS_CK/6 // Rising edge is high //Set VDDA voltage DrvPMU_VDDA_Voltage(E_VDDA2_4); DrvPMU_VDDA_LDO_Ctrl(E_LDO); DrvPMU_BandgapEnable(); DrvPMU_REFO_Enable(); //VDDA=2.4 //LDO ON DrvPMU_AnalogGround(Enable); //ADC analog ground source set //1 : Enable buffer //and use internal source //need to work with ADC //Set ADC interrupt DrvADC_EnableInt(); DrvADC_ClearIntFlag(); DrvADC_Enable(); . SYS_EnableGIE(7); //Enable GIE while(1); //Wait for Interrupt } void HW2_ISR(void) { DrvADC_ClearIntFlag(); ADCData=DrvADC_GetConversionData(); } © 2013 HYCON Technology Corp www.hycontek.com //ADC interrupt //Clear ADC interrupt flag //Get ADC data APD-HY16F003-V03_EN Page 26 HY16F18X HYCON IP User’s Manual 11. Analog IP (CMP) 11.1 Example Name CMP usage 11.2 Example Description 32 31 30 29 28 27 26 25 NC PT2.3 PT2.2 PT2.1 PT2.0 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 NC REFO/PT3.6 AIO3 AIO2 AIO1 AIO0 19 VDDA 18 NC 17 NC 16 PT3.7 15 EDIO 14 ECK 13 . NC 20 37 33 21 38 34 22 PT2.6 35 23 PT2.5 36 24 PT2.4 39 (1) Set up CMP register and IO. (2) CH3(PT1.2) connects to CMP positive end. (3) CH2(PT1.1) connects to CMPnegative end. (4) If CH3 positive voltage larger than CH2 negative voltage, then CMPO digital output High. (5) If CH3 positive voltage smaller than CH2 negative voltage, then CMPO digital output Low. 40 PT2.7 41 VDD 42 NC 43 VDD3 44 CP_O 45 CH 46 CL 47 CP_I 48 (PT1.2) CH3 VSS CMPO PT1.7 CMP (PT1.1) CH2 © 2013 HYCON Technology Corp www.hycontek.com 9 10 NC 8 PT1.7 PT1.6 7 PT1.5 6 PT1.4 5 PT1.3 4 PT1.2 PT4.0/RST 3 PT1.1 2 PT1.0 1 VPP NC HY16F188 11 12 APD-HY16F003-V03_EN Page 27 HY16F18X HYCON IP User’s Manual 11.3 System Setup ENHOSC_EXT CPUMPI VDD33V VDD18V 001 010 100 CMPRH[2:0] CMP_DM[2] 22.5R 0 1 CMP_DA[2] CMPO CMP_DM[1] CPRLH R_SHORT XOUT(PT2.7) 0 1 CMP_DA[3] CMPO RLO CMP_DA[1] CMPO 16R CPRLL 20R 0 1 CMP_DM[0] CMP_DA[0] CMPO 0 1 0000(x0/16) 0001(x1/16) 0010(x2/16) 0011(x3/16) 0100(x4/16) 0101(x5/16) 0110(x6/16) 0111(x7/16) 1000(x8/16) 1001(x9/16) 1010(x10/16) 1011(x11/16) 1100(x12/16) 1101(x13/16) 1110(x14/16) 1111(x15/16) HAO=2MHz HAO=4MHz HAO=10MHz HAO=20MHz 00 01 10 11 CMPPI[1:0] (PT1.2) CH3 00 01 10 11 OSC_HSRC CPUCLKS HS_CK LS_CK CMPIF ENCMP_INT OPAIF ENOPA_INT CMPNI[1:0] (PT1.1) CH2 00 01 10 11 CPUCLK_PRE CPUCLK 0 CPU 0 ÷1 1 ÷2 1 APBCLK Interrupt Signal APB HW3 Interrupt Vector INT3 CMP_LPOWER ENCMP CMPVI_SHORT PT1.3 HS_CK 1 HS_S 0 ENHAO HAOTR[7:0] HAO_SEL[1:0] RLO GIE_HW3 PT1.2 OSC_HSXT 16R PT1.0 PT1.1 HOSC_S Ext OSC_HS 4~20MHz XIN(PT2.6) CMP_DM[3] CMPDLY CMP 2uS delay 1 0 CMPDO_PTS CMPINV ENOUTn.x 0 CMPO 1 ENCMPDO_PT 0 1 PT1.7 . 11.4 Software Flow Program Start Interrupt Vice Program Initializing Setup Clear Interrupt Flag CMP Setup Back to Main Program Waiting for Interrupt © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 28 HY16F18X HYCON IP User’s Manual 11.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include "HY16F18X.h" int main(void) { DrvGPIO_Open(E_PT1,0X80,E_IO_OUTPUT); DrvCMP_PInput(2); DrvCMP_NInput(1); //PT1.7 set Output //CMP positive input CH3 //CMP negative input CH2 DrvCMP_Enable(); DrvCMP_OutputPinEnable(0); //CMP enable //Enable CMP digital output to port //0:PT1.7 DrvCMP_ClearIntFlag(); DrvCMP_EnableInt(); //Clear CMP interrupt flag //Enable CMP Interrupt SYS_EnableGIE(7); while(1); //Enable GIE (Global Interrupt Enable) //while loop } void HW3_ISR(void) { DrvCMP_ClearIntFlag(); } © 2013 HYCON Technology Corp www.hycontek.com . //Clear CMP interrupt flag APD-HY16F003-V03_EN Page 29 HY16F18X HYCON IP User’s Manual 12. Communication IP (SPI) 12.1 Example Name Communication SPI interrupt setup. 12.2 Example Description 2 PT3.3 PT3.4 NC PT3.2 PT3.5 PT3.1 AIO0 VDDA NC NC PT3.7 EDIO ECK NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 37 38 39 40 PT2.1 PT1.0 PT4.0/RST 3 41 PT2.2 4 VPP PT1.1 5 NC PT1.2 6 42 PT3.0 7 43 PT2.0 8 45 AIO1 HY16F188 9 46 AIO2 SPI 01 47 AIO3 . 11 48 REFO/PT3.6 21 1 © 2013 HYCON Technology Corp www.hycontek.com NC 13 VSS 25 14 CP_I SPI CS_1 CK_1 DI_1 DO_1 CS_2 CK_2 DI_2 DO_2 CS_3 CK_3 DI_3 DO_3 CS_4 CK_4 DI_4 DO_4 26 15 CL 27 16 CH 28 17 CP_O 29 18 VDD3 30 19 NC 31 20 VDD IO PT1.0 PT1.1 PT1.2 PT1.3 PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PT2.2 PT2.3 PT2.4 PT2.5 PT2.6 PT2.7 32 21 PT2.7 33 22 PT2.6 34 23 PT2.5 35 24 PT2.4 44 NC 36 PT2.3 (1) SPI pin and SPI register setup (2) Test hardware SPI to AT93C46 write-in function APD-HY16F003-V03_EN Page 30 HY16F18X HYCON IP User’s Manual 12.3 System Setup HY16F188 32-bit Flash MCU Embdded 24-bit SD ADC AT93C46 CS CLK DO DI ORG CS_3 = PT2.0 CK_3 = PT2.1 MISO_3 = PT2.2 MOSI_3 = PT2.3 12.4 Software Flow Program Start B C IO Setup PT2.0=CS=1 PT2.0=CS=1 Hardware SPI Initializing Setup EWEN=0X20 WRITE=0X20 A EWEN=0X60 Address=0X01 CMD=0X81 PT2.0=CS=0 Data=0X55 C PT2.0=CS=0 Detect PT1.7 . N=1 Y=0 A B © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 31 HY16F18X HYCON IP User’s Manual 12.5 Program Description (Main Program) 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include "HY16F18X.h" volatile unsigned int i,a; void InitalSPI32(void); void Delay(unsigned int num); int main(void) { SPI32_INI(); while(1) { i=DrvGPIO_GetBit(E_PT1,7); while(i==0) { DrvGPIO_SetBit(E_PT2,0); DrvSPI32_Write(0X02000000); Delay(0X20); DrvSPI32_Write(0X60000000); Delay(0X50); DrvGPIO_ClrBit(E_PT2,0); //Write enable //PT2.0 CS=1 //AT93C56=0X09 //AT93C56=0X80 . //PT2.0 CS=0 Delay(0X20); DrvGPIO_SetBit(E_PT2,0); DrvSPI32_Write(0X02000000); Delay(0X20); DrvSPI32_Write(0X81000000); Delay(0X20); DrvSPI32_Write(0X55000000); Delay(0X50); DrvGPIO_ClrBit(E_PT2,0); //Write CMD //PT2.0 CS=1 //AT93C56=0X0A //AT93C56 Address 0X01 //AT93C56 Data 0X55 //PT2.0 CS=0 Delay(0X20); i=DrvGPIO_GetBit(E_PT1,7); } Delay(0X200); } return 0; } © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 32 HY16F18X HYCON IP User’s Manual (Vice Program) 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 void HW0_ISR(void) { int_00=0XFF00FF00; } void InitalSPI32(void) { //Set SPI input pin DrvGPIO_Open(E_PT2,0X0B,E_IO_OUTPUT); DrvGPIO_Open(E_PT2,0X04,E_IO_INPUT); DrvGPIO_SetPortBits(E_PT2,0X01); //CS=PT2.0 output pio_44=0XFF50; spi_00=0XFF00FF03; spi_04=0XFF010007; clk_0c=0XFF00FF0C; } void Delay(unsigned int num) { volatile unsigned int d; for(d=0;d<=num;d++);asm("NOP"); } © 2013 HYCON Technology Corp www.hycontek.com //Software Delay Subroutines . APD-HY16F003-V03_EN Page 33 HY16F18X HYCON IP User’s Manual 13. Communication IP (UART) 13.1 Example Name Communication UART interrupt setup 13.2 Example Description 2 PT2.0 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 VDDA NC NC PT3.7 EDIO ECK NC NC PT1.7 PT1.6 PT1.5 PT1.4 PT1.3 PT1.2 37 38 PT2.1 PT1.0 VPP PT4.0/RST 3 39 PT2.2 4 NC PT1.1 5 40 HY16F188 1 © 2013 HYCON Technology Corp www.hycontek.com AIO0 UART 6 41 . 7 42 AIO1 8 43 AIO2 9 44 AIO3 01 45 REFO/PT3.6 11 46 UART TX_1 RX_1 TX_2 RX_2 TX_3 RX_3 TX_4 RX_4 TX_5 RX_5 TX_6 RX_6 TX_7 RX_7 TX_8 RX_8 21 47 NC IO PT1.0 PT1.1 PT1.2 PT1.3 PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PT2.2 PT2.3 PT2.4 PT2.5 PT2.6 PT2.7 13 VSS 25 14 CP_I 26 15 CL 27 16 CH 28 17 CP_O 29 18 VDD3 30 19 NC 31 20 VDD 32 21 PT2.7 33 22 PT2.6 34 23 PT2.5 35 24 PT2.4 48 NC 36 PT2.3 (1) Connecting TX and RX PIN to RS232 related circuit APD-HY16F003-V03_EN Page 34 HY16F18X HYCON IP User’s Manual 13.3 System Setup EUART TRANSMIT BLOCK DIAGRAM ENSP [0] Data Bus Enable EUART 8 Exclusive OR PARITY [0] XOR 8 TXREG Register TX9D TX9D[0] TX9[0] ENADD[0] 1 0 Interrupt TXIE[0] ENTX[0] (8) (7) MSB ………… TSR Register 0 LSB TXIF Buffer and Control TX pin TRMT[0] BRGRH BRGRL Baud Rate Generator 13.4 Software Flow Program Start . Interrupt Vice Program Initializing Setup Clear Interrupt Flag UART Setup Back to Main Program UART Sending Data © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 35 HY16F18X HYCON IP User’s Manual 13.5 Program Description 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 #include "HY16F18X.h" #include "DrvREG32.h" void Delay (unsigned int num); void All_in_One_Initial(void); unsigned int temp,Buffer_Start,PT_1D7,i; // int main(void) { All_in_One_Initial(); PT_1D7=DrvGPIO_GetBit(E_PT1,7); SYS_EnableGIE(7); Buffer_Start=0x00; Initial UART and others // while(1) { i=DrvGPIO_GetBit(E_PT1,7); if(i==0) { int_00=0x08080c00; DrvUART_Write(Buffer_Start++); Delay(0x8000); } Delay(0x8000); } //read PT1.7 pin //high or low //If PT1.7=0 //UART INT set 0X08080C00 . return 0; } void HW0_ISR(void) { int_00=0x0e000c00; temp=DrvUART_Read(); int_00=0x08000c00; } © 2013 HYCON Technology Corp www.hycontek.com //UART Interrupt //Clear UART interrupt flag //Clear UART interrupt flag APD-HY16F003-V03_EN Page 36 HY16F18X HYCON IP User’s Manual 40 41 void Delay(unsigned int num) 42 { 43 volatile unsigned int d; 44 for(d=0;d<=num;d++);asm("NOP"); 45 } 46 47 void All_in_One_Initial(void) 48 { 49 DrvGPIO_Open(E_PT1,0x80,E_IO_INPUT); 50 DrvGPIO_Open(E_PT1,0x80,E_IO_PullHigh); 51 52 DrvGPIO_Open(E_PT2,0x04,E_IO_OUTPUT); 53 DrvGPIO_Open(E_PT2,0x08,E_IO_INPUT); 54 55 DrvCLOCK_EnableHighOSC(E_EXTERNAL); 56 DrvUART_Open(4,B9600,DRVUART_PARITY_NONE,DRVUART_DATABITS_8,5); 57 58 DrvUART_DisableAutoBaudrate(); 59 clk_08=0xff10ff00; 60 61 asm volatile("sethi $r0, 0xc0000"); 62 asm volatile("ori $r0, $r0, 0x003f"); 63 asm volatile("mtsr $r0, $INT_MASK"); 64 asm volatile("movi $r0, 0x70009"); 65 asm volatile("mtsr $r0, $PSW"); . 66 } 67 © 2013 HYCON Technology Corp www.hycontek.com //set PT1_7 INPUT //enable PT1_7 //pull high R //PT2.2 output TX.5 //PT2.3 input RX.5 //select HSXT 4MHz //N801 GIE setting1 //N801 GIE setting2 APD-HY16F003-V03_EN Page 37 HY16F18X HYCON IP User’s Manual 14. Communication IP (I2C) 14.1 Example Name Test hardware, I2C 14.2 Example Description (1) Set up I2C register through I2C pin. (2) Test hardware I2C write function to AT24C02 14.3 System Setup VDD3 R=10K HY16F188 32-bit Flash MCU Embdded 24-bit SD ADC AT24C02 SCL SDA © 2013 HYCON Technology Corp www.hycontek.com . PT2.0=SCL_5 PT2.1=SDA_5 APD-HY16F003-V03_EN Page 38 HY16F18X HYCON IP User’s Manual 14.4 Software Flow Program Start B IO Setup I2C Start Hardware I2C Initializing Setup I2C Device ID A I2C Address Detect PT1.7 Y=0 B © 2013 HYCON Technology Corp www.hycontek.com I2C Data N=1 . I2C Stop A APD-HY16F003-V03_EN Page 39 HY16F18X HYCON IP User’s Manual 14.5 Program Description (Main Program) 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include "HY16F18X.h" volatile unsigned int i,a; int main(void) { I2C_INI(); while(1) { i=(pio_08 & 0x80)>>7;a=i; while(a==0) { I2C_Start(); //HY16F188 Hardware I2C Start DrvI2C_WriteData(0XA0); I2C_NACK(); //AT24C02 Device ID DrvI2C_WriteData(0X00); I2C_NACK(); //AT24C02 Address=0X00 . DrvI2C_WriteData(0X55); I2C_NACK(); //Data1=0X55 @ Address=0X00 DrvI2C_WriteData(0XAA); I2C_NACK(); //Data2=0XAA @ Address=0X01 I2C_Stop(); //HY16F188 Hardware I2C Stop i=(pio_08 & 0x80)>>7;a=i; } Delay(0x50); } return 0; } © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 40 HY16F18X HYCON IP User’s Manual (Vice Program) 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 void I2C_INI(void) { pio_00=0XFF800000; pio_04=0XFF800000; pio_10=0XFF00FF03; pio_14=0XFF00FF03; //Hardware I2C Initial //PT1.7 input pio_44=0X0909FF00; i2c_00=0XFF00FF00; i2c_14=0X0000FFFF; //0X41000//I2C OFF //0X44014 } void I2C_Start(void) { DrvI2C_Ctrl(1,0,0,0); I2C_NOP(); } //Hardware I2C Start void I2C_Stop(void) { DrvI2C_Ctrl(0,1,0,0); I2C_NOP(); } //Hardware I2C Stop void I2C_Write(unsigned int I2C_Data) { DrvI2C_WriteData(I2C_Data); i2c_04=0XFF01; I2C_NOP(); } //SPIA(1000) //SPIA(0100) . //Hardware I2C Write //0X41004 void I2C_NACK(void) { DrvI2C_ClearIRQ(); DrvI2C_ClearEIRQ(); while(!(i2c_04 & 0X00000002)); } //Hardware I2C NACK void I2C_NOP(void) { volatile unsigned int n; for(n=0;n<=0x10;n++);asm("NOP");//0x10 } //Software I2C NOP © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 41 HY16F18X HYCON IP User’s Manual 15. Peripheral IP(GPIO) 15.1 Example Name GPIO configurations 15.2 Example Description (1) Everytime when PT1.4 is pressed, LED display adds 1. (2) If LED increased to 0XF, then cleared 0. LED display adds 1 when PT1.4 pressed. 37 38 39 40 41 42 43 44 45 46 47 25 NC PT2.3 PT2.2 PT2.1 PT2.0 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 NC NC REFO/PT3.6 AIO3 AIO2 AIO1 AIO0 VDDA NC NC PT3.7 EDIO ECK 13 VSS 26 14 CP_I 27 15 CL 28 16 CH 29 17 CP_O 30 18 VDD3 31 19 NC 32 20 VDD 33 21 PT2.7 34 22 PT2.6 35 23 PT2.5 36 24 PT2.4 48 LED X 4 . GPIO NC PT1.2 PT1.3 7 6 PT1.1 PT1.4 8 5 PT1.0 PT1.5 9 4 PT4.0/RST PT1.6 01 3 VPP PT1.7 11 2 1 © 2013 HYCON Technology Corp www.hycontek.com 21 NC HY16F188 APD-HY16F003-V03_EN Page 42 HY16F18X HYCON IP User’s Manual 15.3 System Setup VDD3 3V RPU=75K PUn.x PTn.x ENINn. x Digital Input 250 AIO ENOUTn.x Digital Output PT1.0 PT1.1 PT1.2 PT1.3 PT1.4 PT1.5 PT1.6 PT1.7 PT2.0 PT2.1 PT2.2 PT2.3 PT2.4 PT2.5 PT2.6 PT2.7 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 PT3.6 PT3.7 PT4.0 15.4 Software Flow Program Start B Initializing Setup . Y Value > 0XF ? A LED=0 N A Detect PT1.4 N=1 Y=0 LED+1 B © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 43 HY16F18X HYCON IP User’s Manual 15.5 Program Description 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include "HY16F188.h" void Delay (unsigned int num); int main(void) { unsigned int i=0,j=0; DrvGPIO_Open(E_PT1,0X10,E_IO_INPUT); DrvGPIO_Open(E_PT1,0X10,E_IO_PullHigh); DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT); while(1) { i=DrvGPIO_GetBit(E_PT1,4); if(i==0) { DrvGPIO_SetPortBits(E_PT2, j++); if(j>0X0F)j=0X00; } //Set PT1_4 INPUT //Enable PT1 4 pull hi R //Set PT2_0~3 OUTPUT //Read PT1.4 high or low //IF PT1.4 is low //J++ //IF J>0XF J=0 Delay(0X8000); } void Delay(unsigned int num) { int a;for(a=0;a<=num;a++); } © 2013 HYCON Technology Corp www.hycontek.com . //Delay loop APD-HY16F003-V03_EN Page 44 HY16F18X HYCON IP User’s Manual 16. Peripheral IP (Power) 16.1 Example Name Test Sleep and Idle current 16.2 Example Description PT2.3 PT2.2 PT2.1 PT2.0 PT3.0 PT3.1 PT3.2 PT3.3 PT3.4 PT3.5 NC 37 25 PT2.4 NC 24 38 26 PT2.5 REFO/PT3.6 23 39 27 PT2.6 AIO3 22 40 28 PT2.7 AIO2 21 41 29 VDD AIO1 20 42 30 NC AIO0 19 43 31 VDD3 VDDA 18 44 32 CP_O NC 17 45 33 CH NC 16 46 34 CL PT3.7 15 47 35 CP_I EDIO 14 48 36 NC (1) Do not float every pin. Ex. If grounding 2PIN (the 13rd and 14th pin) of EDM, Sleep current can be lowered than 2.5 (uA). (2) IC will enter into Sleep mode when PT1.4 is pressed. VSS ECK 13 . HY16F188 VDD3 NC PT1.2 PT1.3 7 6 PT1.1 PT1.4 8 5 PT1.0 PT1.5 9 4 PT4.0/RST PT1.6 01 3 VPP PT1.7 11 2 1 © 2013 HYCON Technology Corp www.hycontek.com 21 NC Sleep current 2.5uA APD-HY16F003-V03_EN Page 45 HY16F18X HYCON IP User’s Manual 16.3 System Setup 16.4 Software Flow Program Start . Initializing Setup IO Setup Peripheral Setup Detect PT1.4 N=1 Y=0 Sleep Setup After this program entered into Sleep, current measured can be lowered than 2.5 (uA) min.. To awaken the IC, only Power ON Reset can be used. © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 46 HY16F18X HYCON IP User’s Manual 16.5 Program Description 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include "HY16F18X.h" void Delay (unsigned int num); int main(void) { DrvGPIO_ClearIntFlag(E_PT2,0 XFF); //clear PT2.0~7 interrupt flag DrvGPIO_Open(E_PT1,0X3F,E_IO_OUTPUT); DrvGPIO_Open(E_PT3,0XFF,E_IO_OUTPUT); //SET PT1.0~6 AS OUTPUT PT1.6~7 INPUT //SET PT3 AS OUTPUT DrvGPIO_Open(E_PT1,0XC0,E_IO_INPUT); DrvGPIO_Open(E_PT1,0XC0,E_IO_PullHigh ); //PT1_6~7 set input //PT1_6~7 pull internal high R enable DrvGPIO_Open(E_PT2,0XFF,E_IO_INPUT); DrvGPIO_Open(E_PT2,0XFF,E_IO_PullHigh ); //PT2_0~7 set input //PT2_0~7 pull internal high R enable DrvPMU_LDO_LowPower(1); i=DrvGPIO_GetBit(E_PT1,7); //SET low power mode //read PT1.7 pin high or low DrvCLOCK_EnableHighOSC(E_INTERNAL); DrvGPIO_ClkGenerator(E_HS_CK,1); DrvGPIO_IntTrigger(E_PT2,0XFFE_N_Edge);. //select HSRC 2MHz //GPIO CLK enable // trigger method is negative edge //PT2.0~7 interrupt DrvGPIO_Open(E_PT2,0XFF,E_IO_IntEnable); //PT2.0~7 interrupt enable SYS_EnableGIE(7); asm("sethi $r0,0xc0000"); asm("ori $r0,$r0,0x003f"); asm("mtsr $r0,$ir14"); //Enable GIE (Global Interrupt Enable) © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 47 HY16F18X HYCON IP User’s Manual 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 while(1) { i=DrvGPIO_GetBit(E_PT1,7); if(i==0) { clk_08=0XFF80FF03; clk_00=0XFF00FF04; asm("NOP"); sys_04=0X1000; //sys_04=0X1010; asm("standby 1"); asm("NOP"); } Delay(0X8000); } //read PT1.7 pin high or low //if PT1.7 low //[CPU/2][RTC Clock On] //[Internal OSC OFF][32768] //sleep mode //idle mode } void HW5_ISR(void) { DrvGPIO_ClearIntFlag(E_PT2,0XFF); asm("sethi $r0,0xc0000"); asm("ori $r0,$r0,0x003f"); asm("mtsr $r0,$ir14"); } void Delay(unsigned int num) { int a;for(a=0;a<=num;a++); } //Clear PT2 interrupt flag . SYS Base Address + 0X04 (0X40104) Symbol SYS0 (SYS Control Register 0) Bit [31] [30] [29] [28] [27] [26] [25] [24] [23] [22] [21] [20] Name RSV RW R-0 Bit [15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4] FCRst IDLE Name MASK RW R0W-0 Bit Name Bit[4] IDLE [19] [18] [17] [16] [3] [2] [1] [0] FSLP/IDLE FWDog FRST FBOR RW0-0 RW0-1 Descriptions IDLE Mode Control Register 0 Sleep Mode 1 IDLE Mode (1) Sleep Mode asm("standby 1"); sys_04=0X1000; (2) Idle Mode asm("standby 1"); sys_04=0X1010; © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 48 HY16F18X HYCON IP User’s Manual 17. Digital IP(RTC) 17.1 Example Name Test hardware RTC 17.2 Example Description Test hardware RTC calendar function 17.3 System Setup RTKEY<3:0> RTCO<6:0> Digital Compensation Controller RTCEN RTPT<2:0> RTINS LSRC 1 LSXT Secondary Scalar /128 Pre-Scalar Input/256 0 RTPTF MUX Periodic Timer Interrupt Mux RTLPYF .Time Format (BCD) Time Format (BCD) Year/Month/Day/WDay Hour/Min/Sec RTPTF RTWUF RTTAF RCAFEN RTTAF Alarm RTWUEN 17.4 Software Flow Program Start Initializing Setup RTC Setup Time RTC Time Output © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 49 HY16F18X HYCON IP User’s Manual 17.5 Program Description (Main Program) 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include "HY16F18X.h" unsigned int sec,min,hour,week,day,month,year; void Delay(unsigned int num); void RTC_Initial(void); int main(void) { RTC_Initial(); //RTC initializing(time setup included) while(1) { asm("NOP"); S_DRVRTC_TIME_DATA_T sCurTime; DrvRTC_Read(DRVRTC_CURRENT_TIME,&sCurTime); sec=sCurTime.u32cSecond; min=sCurTime.u32cMinute; hour=sCurTime.u32cHour; week=sCurTime.u32cDayOfWeek; day=sCurTime.u32cDay; month=sCurTime.u32cMonth; year=sCurTime.u32Year; asm("NOP"); . //RTC read time setup //RTC read time data //read_second //read_minute //read_hour //read_week //read_date //read_month //read_year } return 0; } © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 50 HY16F18X HYCON IP User’s Manual (Vice Program) 00 01 void RTC_Initial(void) 02 { 03 //RTC CLK; 04 clk_08=0x8080ff00; 05 //RTC KEY; 06 rtc_00=0xff60ff00; 07 asm("NOP"); 08 09 DrvRTC_WriteEnable(); 11 //DrvRTC_ClockSource(E_INTERNAL_CLOCK);//35KHz 12 DrvRTC_ClockSource(E_EXTERNAL_CLOCK);//32768Hz 13 14 DrvRTC_PeriodicTimeEnable(0);//set 1/128 15 DrvRTC_Enable(); 16 DrvRTC_HourFormat(0); 17 18 asm("NOP"); 19 S_DRVRTC_TIME_DATA_T sCurTime;//setting start 20 DrvRTC_Read(DRVRTC_CURRENT_TIME,&sCurTime); 21 sCurTime.u8cClockDisplay=1; 22 sCurTime.u8cAmPm=0; 23 sCurTime.u32cSecond=19; 24 sCurTime.u32cMinute=50; 25 sCurTime.u32cHour=10; 26 sCurTime.u32cDayOfWeek=5; . 27 sCurTime.u32cDay=9; 28 sCurTime.u32cMonth=8; 29 sCurTime.u32Year=2013; 30 sCurTime.u8IsEnableWakeUp=0; 31 DrvRTC_Write(DRVRTC_CURRENT_TIME,&sCurTime); 32 asm("NOP"); 33 } 34 © 2013 HYCON Technology Corp www.hycontek.com //Setup_second //Setup _minute //Setup _hour //Setup_week //Setup_date //Setup_month //Setup_year APD-HY16F003-V03_EN Page 51 HY16F18X HYCON IP User’s Manual 18. Appendix Program 01 02 03 04 05 06 Digital IP TimerA TimerB TimerC WDT PWM Hardware RTC Analog IP 8-bit DAC R2R OPAMP 24-bit SD ADC Analog CMP ů ů Communication IP Hardware 32-bit SPI Hardware UART Hardware I2C ů ů ů Peripheral IP GPIO Sleep Mode Idle Mode ů ů ů HY16F18X_2013091 0.rar 19. Revision History Major amendment is stated thereinafter: Version Page Revision Summary V03 ALL First Edition Date 2013/12/1 . © 2013 HYCON Technology Corp www.hycontek.com APD-HY16F003-V03_EN Page 52