ISD-DMK_2360

ISD-DMK_2360, ISD-VPE2360, ISD2360_Example_Project_3 분석

CoyoteUgly 2018. 8. 14. 20:42

ISD-DMK_2360, ISD-VPE2360, ISD2360_Example_Project_3 분석


추가 분석 및 동작 영상에 대해서는 추후 정리합니다.


C:\Program Files (x86)\ISD-VPE2360\ISD2360_Example_Projects\ISD2360_Example_Project_3

example 소스 분석입니다.


  • SW1 버튼은 Channel 1을 통해 소리 출력하고 SW2 버튼은 Channel 2를 통해 소리 출력하므로 SW1 버튼을 누르고 SW2 버튼을 누르면 2개의 Macro가 동시에 동작하는 것으로 확인됨


SW1 = GPIO_0 = R0

=> 동작할 것 같음 ( Volume Up??? )

=> volume 단위는???


SW2 = GPIO_1 = R1

=> 동작 확인 ( GPIO_4~5 LED Blink Fast, 204ms cycle )

=> 재생 중에 다시 누르면 멈춤


SW3 = GPIO_2 = R2

=> 동작 확인 ( GPIO_4~5 LED Blink Slow, 408ms cycle )

=> 재생 중에 다시 누르면 멈춤


SW4 = GPIO_3 = R3

=> 동작 확인 ( Volume down )

=> volume 단위는???


SW5 ( None )


SW6 ( None )





POI
    CFG(REG2, 0x44)
        => Audio Path
       
    CFG(GPIO_TRIG_CH_SEL_L, 0x24)
        => GPIO Trigger Channel Select 1

  => 0010 0100

        => GPIO3, Channel 0

        => GPIO2, Channel 2

  => GPIO1, Channel 1

        => Others, Channel 0
       
    CFG(GPIO_VOL_UD_SEL, 0xb8)
        => Trigger Volume Control Register
        => 1011 1000
        => enable GPIO trigger to volume down feature
        => GPIO3 trigger to volume down
        => enable GPIO trigger to volume up feature
        => GPIO0 trigger to up down
       
    CFG(REG_GPIO_OE, 0x30)
        => GPIO_4~5, Output Enable
    CFG(REG_GPIO_DO, 0x30)
        => GPIO_4~5, Output High
       
    CFG(REG_GPIO_PE, 0x3f)
        => GPIO_0~5, Pull Enable
    CFG(REG_GPIO_PS, 0x3f)
        => GPIO_0~5, Pull High Enable
       
    CFG(REG_GPIO_AF1, 0x0f)
    CFG(REG_GPIO_AF0, 0x00)
        => GPIO_0~3, Falling Edge Trigger
       
    CFG(R0, 0x08)
        => GPIO_0 intr, VM_5 execute (empty)
       
    CFG(R1, 0x04)
        => GPIO_1 intr, VM_1 execute
       
    CFG(R2, 0x05)
        => GPIO_2 intr, VM_2 execute
       
    CFG(R3, 0x08)
        => GPIO_3 intr, VM_5 execute (empty)
       
    CFG(R4, 0x08)
        => GPIO_4 intr, VM_5 execute (empty)
       
    CFG(R5, 0x08)
        => GPIO_5 intr, VM_5 execute (empty)
       
    PLAY_VP(FastBeep)
        =>
       
    PD


PU (empty)


WAKEUP
    CFG(REG2, 0x44)
        => Audio Path
    CFG(REG1, 0x20)
        => SampleRate Overwrite Register
        => 5.33kHz

  => ???

    Finish


VM (empty)


VM_1
    CFG(R1, 0x06)
        => GPIO_1 intr, VM_3 execute (-> PD )
    LOOP_VP(Sine_0dot5dB_5_Sec_440Hz,0)
        => ???
Label_1:    CFG(CH1_CNTR, 0x10)
        => Channel 1 Counter Control Register
        => Sets Channel 1 counter reload value.
                VM execution in Channel 1 will be blocked until Channel 1 counter counts down to 0.
                Total delay time = (CH1_CNT+1)*12ms.
    CFG(REG_GPIO_DO, 0x00)
        => GPIO_0~5, Output Low
    WAIT_CNT
        =>
    CFG(CH1_CNTR, 0x10)
        => Channel 1 Counter Control Register
    CFG(REG_GPIO_DO, 0x38)
        => GPIO_3~5, Output High
    WAIT_CNT
        =>
    CFG(MASK, 0x40)
        => Mack Jump Control Register
        => JBUSY
        => VM execution branches if there is an active VP playback operation.
    Mask_Goto Label_1
        =>
    PD


VM_2
    CFG(R2, 0x07)
        => GPIO_2 intr, VM_4 execute (-> PD )
    LOOP_VP(Sine_0dot5dB_5_sec_554Hz,0)
        => ???
    CFG(CH2_CNTR, 0x20)
        => Channel 2 Counter Control Register
        => Sets Channel 2 counter reload value.
                VM execution in Channel 2 will be blocked until Channel 2 counter counts down to 0.
                Total delay time = (CH2_CNT+1)*12ms.
    CFG(REG_GPIO_DO, 0x00)
        => GPIO_0~5, Output Low   
    WAIT_CNT
        =>
Label_2:    CFG(CH2_CNTR, 0x20)
        => Channel 2 Counter Control Register
    CFG(REG_GPIO_DO, 0x38)
        => GPIO_3~5, Output High   
    WAIT_CNT
        =>
    CFG(MASK, 0x40)
        => Mack Jump Control Register
        => JBUSY
        => VM execution branches if there is an active VP playback operation.   
    Mask_Goto Label_2
        =>
    PD


VM_3
    CFG(R1, 0x04)
        => GPIO_1 intr, VM_1 execute
    PD


VM_4
    CFG(R2, 0x05)
        => GPIO_2 intr, VM_2 execute
    PD


VM_5 (empty)