Ignore:
Timestamp:
Sep 14, 2020, 6:36:03 PM (4 years ago)
Author:
coas-nagasima
Message:

SPIとSerial、KPUの動作を改善

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub_riscv/trunk/asp_baseplatform/pdic/k210/dvp.c

    r453 r458  
    6666
    6767#define DEAFULT_CLEAR_INT       (DVP_STS_FRAME_START  | DVP_STS_FRAME_START_WE | \
    68                                 DVP_STS_FRAME_FINISH | DVP_STS_FRAME_FINISH_WE)
     68                                                                DVP_STS_FRAME_FINISH | DVP_STS_FRAME_FINISH_WE)
    6969
    7070
     
    7575{
    7676        uint32_t clk_sel0 = sil_rew_mem((uint32_t *)(TADR_SYSCTL_BASE+TOFF_CLK_SEL0));
    77     uint32_t source = 0;
    78     uint32_t result = 0;
     77        uint32_t source = 0;
     78        uint32_t result = 0;
    7979        uint32_t threshold = 0;
    8080
     
    9797        result = source / (threshold + 1);
    9898        syslog_2(LOG_NOTICE, "## dvp_clock_get_freq req(%d) result(%d) ##", clock, result);
    99     return result;
     99        return result;
    100100}
    101101
     
    104104{
    105105        while(sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS)) & DVP_STS_SCCB_EN)
    106         ;
     106                ;
    107107        sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS), (DVP_STS_SCCB_EN | DVP_STS_SCCB_EN_WE));
    108     while (sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS)) & DVP_STS_SCCB_EN)
    109         ;
     108        while (sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS)) & DVP_STS_SCCB_EN)
     109                ;
    110110}
    111111
     
    150150        tmp = sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CFG)) & (~DVP_SCCB_BYTE_NUM_MASK);
    151151
    152     if (hdvp->Init.num_sccb_reg == 8)
     152        if (hdvp->Init.num_sccb_reg == 8)
    153153                tmp |= DVP_SCCB_BYTE_NUM_2;
    154154        else
     
    164164        sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CTL), tmp);
    165165
    166     dvp_sccb_start_transfer(hdvp);
     166        dvp_sccb_start_transfer(hdvp);
    167167
    168168        sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CTL), addr);
    169169
    170     dvp_sccb_start_transfer(hdvp);
     170        dvp_sccb_start_transfer(hdvp);
    171171
    172172        tmp = sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CFG));
     
    182182dvp_init(DVP_Handle_t *hdvp)
    183183{
    184     uint32_t v_apb1_clk, v_period;
     184        uint32_t v_apb1_clk, v_period;
    185185
    186186        if(hdvp == NULL)
     
    201201        fpioa_set_function(hdvp->Init.SccbSdaPin, FUNC_SCCB_SDA);
    202202
    203     /* Do a power cycle */
    204     dvp_dcmi_powerdown(hdvp, false);
    205     dly_tsk(10);
    206 
    207     dvp_dcmi_powerdown(hdvp, true);
    208     dly_tsk(100);
     203        /* Do a power cycle */
     204        dvp_dcmi_powerdown(hdvp, false);
     205        dly_tsk(10);
     206
     207        dvp_dcmi_powerdown(hdvp, true);
     208        dly_tsk(100);
    209209
    210210        /*
     
    372372        cfg  = sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_CFG));
    373373        cfg &= ~(DVP_CFG_HREF_BURST_NUM_MASK | DVP_CFG_LINE_NUM_MASK);
    374     cfg |= hdvp->Init.Height << 20;
    375 
    376     if((cfg & DVP_CFG_BURST_SIZE_4BEATS) != 0)
     374        cfg |= hdvp->Init.Height << 20;
     375
     376        if((cfg & DVP_CFG_BURST_SIZE_4BEATS) != 0)
    377377                divw = 4;
    378378        else
    379379                divw = 1;
    380380        cfg |= (hdvp->Init.Width / 8 / divw) << 12;
    381     sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_CFG), cfg);
     381        sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_CFG), cfg);
    382382        return E_OK;
    383383}
     
    403403
    404404        sccb_cfg  = sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CFG));
    405     sccb_cfg &= ~(DVP_SCCB_SCL_LCNT_MASK | DVP_SCCB_SCL_HCNT_MASK);
    406     sccb_cfg |= (v_period_clk_cnt << 8) | (v_period_clk_cnt << 16);
     405        sccb_cfg &= ~(DVP_SCCB_SCL_LCNT_MASK | DVP_SCCB_SCL_HCNT_MASK);
     406        sccb_cfg |= (v_period_clk_cnt << 8) | (v_period_clk_cnt << 16);
    407407        sil_wrw_mem((uint32_t *)(hdvp->base+TOFF_DVP_SCCB_CFG), sccb_cfg);
    408408        return dvp_clock_get_freq(DVP_CLOCK_REQ) / (v_period_clk_cnt * 2);
     
    454454        uint32_t istatus, estatus;
    455455
    456         if(hdvp == NULL)
     456        if (hdvp == NULL) {
     457                syslog_0(LOG_NOTICE, "dvp_handler hdvp == NULL");
    457458                return;
     459        }
    458460        istatus = sil_rew_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS));
    459         if(istatus == 0)
     461        if (istatus == 0) {
     462                syslog_0(LOG_DEBUG, "dvp_handler istatus == 0");
    460463                return;
     464        }
    461465        estatus = istatus;
    462         syslog_2(LOG_DEBUG, "sensor_irq istatus[%08x] hdvp->state(%d)", istatus, hdvp->state);
     466        syslog_2(LOG_DEBUG, "dvp_handler istatus[%08x] hdvp->state(%d)", istatus, hdvp->state);
    463467        if((istatus & DVP_STS_FRAME_FINISH) != 0){      //frame end
    464468                estatus |= DVP_STS_FRAME_FINISH_WE;
     
    469473        if((istatus & DVP_STS_FRAME_START) != 0){       //frame start
    470474                estatus |= DVP_STS_FRAME_START_WE;
    471         if(hdvp->state == DVP_STATE_ACTIVATE){  //only we finish the convert, do transmit again
     475                if(hdvp->state == DVP_STATE_ACTIVATE){  //only we finish the convert, do transmit again
    472476                        /*
    473477                         *  コンバートスタート
     
    479483        sil_orw_mem((uint32_t *)(hdvp->base+TOFF_DVP_STS), estatus);
    480484}
    481 
    482 
Note: See TracChangeset for help on using the changeset viewer.