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/gdic/sipeed_st7789/sipeed_st7789.c

    r453 r458  
    8383static void set_dcx_control(LCD_Handler_t *hlcd)
    8484{
    85     gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_LOW);
     85        gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_LOW);
    8686}
    8787
    8888static void set_dcx_data(LCD_Handler_t *hlcd)
    8989{
    90     gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_HIGH);
     90        gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_HIGH);
    9191}
    9292
     
    101101
    102102        aTxBuffer[0] = c;
    103     set_dcx_control(hlcd);
     103        set_dcx_control(hlcd);
    104104        hspi->Init.DataSize = 8;
    105105        hspi->Init.InstLength = 8;
    106106        hspi->Init.AddrLength = 0;
    107     ercd = spi_core_transmit(hspi, hlcd->cs_sel, (uint8_t *)(aTxBuffer), 1);
     107        ercd = spi_core_transmit(hspi, hlcd->cs_sel, (uint8_t *)(aTxBuffer), 1);
    108108#if SPI_WAIT_TIME == 0
    109109        if(ercd == E_OK)
     
    128128                aTxBuffer[i] = buf[i];
    129129
    130     set_dcx_data(hlcd);
     130        set_dcx_data(hlcd);
    131131        hspi->Init.DataSize = 8;
    132132        hspi->Init.InstLength = 8;
     
    146146        ER ercd = E_OK;
    147147
    148     set_dcx_data(hlcd);
     148        set_dcx_data(hlcd);
    149149        hspi->Init.DataSize = 8;
    150150        hspi->Init.InstLength = 8;
     
    167167        ER ercd = E_OK;
    168168
    169     set_dcx_data(hlcd);
     169        set_dcx_data(hlcd);
    170170        hspi->Init.DataSize = 16;
    171171        hspi->Init.InstLength = 16;
     
    188188        ER ercd = E_OK;
    189189
    190     set_dcx_data(hlcd);
     190        set_dcx_data(hlcd);
    191191        hspi->Init.DataSize = 32;
    192192        hspi->Init.InstLength = 0;
     
    206206{
    207207        GPIO_Init_t init = {0};
    208     uint8_t data = 0;
     208        uint8_t data[2] = {0};
    209209
    210210        /*
     
    214214        init.mode = GPIO_MODE_OUTPUT;
    215215        init.pull = GPIO_PULLDOWN;
    216     gpio_setup(TADR_GPIO_BASE, &init, hlcd->dcx_no);
    217     gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_HIGH);
     216        gpio_setup(TADR_GPIO_BASE, &init, hlcd->dcx_no);
     217        gpio_set_pin(TADR_GPIO_BASE, hlcd->dcx_no, PORT_HIGH);
    218218
    219219        /*
     
    227227                gpio_set_pin(TADR_GPIO_BASE, hlcd->rst_no, PORT_HIGH);
    228228
    229             gpio_set_pin(TADR_GPIO_BASE, hlcd->rst_no, 0);
    230             gpio_set_pin(TADR_GPIO_BASE, hlcd->rst_no, 1);
     229                gpio_set_pin(TADR_GPIO_BASE, hlcd->rst_no, 0);
     230                gpio_set_pin(TADR_GPIO_BASE, hlcd->rst_no, 1);
    231231        }
    232232
     
    245245         */
    246246        lcd_writecommand(hlcd, PIXEL_FORMAT_SET);
    247         data = 0x55;
    248     lcd_writebyte(hlcd, &data, 1);
     247        data[0] = 0x55;
     248        lcd_writebyte(hlcd, &data, 1);
    249249        if(hlcd->dir & DIR_XY_MASK){
    250250                hlcd->_width = ST7789_TFTHEIGHT;
     
    259259
    260260        lcd_writecommand(hlcd, MEMORY_ACCESS_CTL);
    261     lcd_writebyte(hlcd, (uint8_t *)&hlcd->dir, 1);
     261        lcd_writebyte(hlcd, (uint8_t *)&hlcd->dir, 1);
     262
     263        //lcd_writecommand(hlcd, RGB_IF_SIGNAL_CTL);
     264        //data[0] = 0x00;
     265        //data[1] = 0xF8;
     266        //lcd_writebyte(hlcd, &data, 2);
    262267
    263268        /*
     
    274279lcd_setAddrWindow(LCD_Handler_t *hlcd,  uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1)
    275280{
    276     uint8_t data[4] = {0};
    277 
    278     data[0] = (uint8_t)(x0 >> 8);
    279     data[1] = (uint8_t)(x0);
    280     data[2] = (uint8_t)(x1 >> 8);
    281     data[3] = (uint8_t)(x1);
     281        uint8_t data[4] = {0};
     282
     283        data[0] = (uint8_t)(x0 >> 8);
     284        data[1] = (uint8_t)(x0);
     285        data[2] = (uint8_t)(x1 >> 8);
     286        data[3] = (uint8_t)(x1);
    282287        lcd_writecommand(hlcd, HORIZONTAL_ADDRESS_SET);
    283     lcd_writebyte(hlcd, data, 4);
    284 
    285     data[0] = (uint8_t)(y0 >> 8);
    286     data[1] = (uint8_t)(y0);
    287     data[2] = (uint8_t)(y1 >> 8);
    288     data[3] = (uint8_t)(y1);
     288        lcd_writebyte(hlcd, data, 4);
     289
     290        data[0] = (uint8_t)(y0 >> 8);
     291        data[1] = (uint8_t)(y0);
     292        data[2] = (uint8_t)(y1 >> 8);
     293        data[3] = (uint8_t)(y1);
    289294        lcd_writecommand(hlcd, VERTICAL_ADDRESS_SET);
    290     lcd_writebyte(hlcd, data, 4);
     295        lcd_writebyte(hlcd, data, 4);
    291296
    292297        SVC_PERROR(lcd_writecommand(hlcd, MEMORY_WRITE));
     
    305310lcd_fillRect(LCD_Handler_t *hlcd, int16_t x, int16_t y, int16_t w, int16_t h, color_t color)
    306311{
    307     uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
     312        uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
    308313        // rudimentary clipping (drawChar w/big text requires this)
    309314        if((x >= hlcd->_width) || (y >= hlcd->_height)) return;
     
    312317
    313318        lcd_setAddrWindow(hlcd, x, y, x+w-1, y+h-1);
    314     SVC_PERROR(lcd_filldata(hlcd, &data, (h*w+1)/2));
     319        SVC_PERROR(lcd_filldata(hlcd, &data, (h*w+1)/2));
    315320}
    316321
     
    326331{
    327332        uint32_t data = color;
    328     lcd_setAddrWindow(hlcd, x, y, x, y);
     333        lcd_setAddrWindow(hlcd, x, y, x, y);
    329334        SVC_PERROR(lcd_writehalf(hlcd, &data, 1));
    330335}
     
    341346lcd_drawFastVLine(LCD_Handler_t *hlcd, int16_t x, int16_t y, int16_t h, color_t color)
    342347{
    343     uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
     348        uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
    344349        // Rudimentary clipping
    345350        if(h == 0) return;
     
    347352        if((y+h-1) >= hlcd->_height) h = hlcd->_height-y;
    348353        lcd_setAddrWindow(hlcd, x, y, x, y+h-1);
    349     SVC_PERROR(lcd_filldata(hlcd, &data, (h+1)/2));
     354        SVC_PERROR(lcd_filldata(hlcd, &data, (h+1)/2));
    350355}
    351356
     
    360365void lcd_drawFastHLine(LCD_Handler_t *hlcd, int16_t x, int16_t y, int16_t w, color_t color)
    361366{
    362     uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
     367        uint32_t data = ((uint32_t)color << 16) | (uint32_t)color;
    363368        // Rudimentary clipping
    364369        if(w == 0) return;
     
    366371        if((x+w-1) >= hlcd->_width)  w = hlcd->_width-x;
    367372        lcd_setAddrWindow(hlcd, x, y, x+w-1, y);
    368     SVC_PERROR(lcd_filldata(hlcd, &data, (w+1)/2));
     373        SVC_PERROR(lcd_filldata(hlcd, &data, (w+1)/2));
    369374}
    370375
     
    462467
    463468        lcd_setAddrWindow(hlcd, x, y, x+width-1, y+height-1);
    464     set_dcx_data(hlcd);
     469        set_dcx_data(hlcd);
    465470        hspi->Init.DataSize = 32;
    466471        hspi->Init.InstLength = 0;
     
    533538{
    534539        LCD_Handler_t *hlcd = pDrawProp->hlcd;
    535         int32_t   decision;    /* Decision Variable */
     540        int32_t   decision;    /* Decision Variable */
    536541        uint32_t  current_x;   /* Current X Value */
    537542        uint32_t  current_y;   /* Current Y Value */
Note: See TracChangeset for help on using the changeset viewer.