Esempio n. 1
0
static cyg_uint8
eeprom_getb(int more)
{
    int i;
    cyg_uint8 b = 0;

    HAL_GPIO_OUTPUT_DISABLE(GPIO_EEPROM_SDA);
    hal_delay_us(5);

    for (i = 7; i >= 0; i--) {
	b <<= 1;
	if (*IXP425_GPINR & (1 << GPIO_EEPROM_SDA))
	    b |= 1;
	CLK_HI();
	hal_delay_us(5);
	CLK_LO();
	hal_delay_us(5);
    }
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SDA);
    if (more)
	DATA_LO();
    else
	DATA_HI();
    hal_delay_us(5);
    CLK_HI();
    hal_delay_us(5);
    CLK_LO();
    hal_delay_us(5);

    return b;
}
Esempio n. 2
0
static int
eeprom_putb(cyg_uint8 b)
{
    int i;

    for (i = 7; i >= 0; i--) {
	if (b & (1 << i))
	    DATA_HI();
	else
	    DATA_LO();
	CLK_HI();
	hal_delay_us(5);
	CLK_LO();
	hal_delay_us(5);
    }
    HAL_GPIO_OUTPUT_DISABLE(GPIO_EEPROM_SDA);
    CLK_HI();
    hal_delay_us(5);
    i = (*IXP425_GPINR & (1 << GPIO_EEPROM_SDA)) ? 0 : 1;
    CLK_LO();
    hal_delay_us(5);

    DATA_HI();
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SDA);

    return i;
}
Esempio n. 3
0
static void
eeprom_stop(void)
{
    int i;
    
    hal_delay_us(5);
    DATA_LO();
    hal_delay_us(5);
    CLK_HI();
    hal_delay_us(5);
    DATA_HI();
    hal_delay_us(5);
    CLK_LO();
    hal_delay_us(5);
    CLK_HI();
    hal_delay_us(5);
}
Esempio n. 4
0
void AspiData(u8 Para_data)
{
    int i=8;
    CLK_HI();
    A0_HI();
    NCS_LO();
    while (i--) {
        CLK_LO();
        if (Para_data&0x80)
            MOSI_HI();
        else
            MOSI_LO();
        Para_data <<= 1;
        __no_operation();
        CLK_HI();
        __no_operation();
    }
    NCS_HI();
    A0_HI();  
}
Esempio n. 5
0
void LCD_Init()
{
    rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPDEN);
    //MOSI
    gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT,
                  GPIO_PUPD_NONE, GPIO10);
    //CLK
    gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT,
                  GPIO_PUPD_NONE, GPIO11);
    //RST
    gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT,
                  GPIO_PUPD_NONE, GPIO12);
    //A0
    gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT,
                  GPIO_PUPD_NONE, GPIO13);
    //CS
    gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT,
                  GPIO_PUPD_NONE, GPIO14);
    NCS_HI();

    RST_HI();
    lcd_delay(5);
    RST_LO();
    lcd_delay(120); //11ms
    RST_HI();
    lcd_delay(2500);
    AspiCmd(0xE2);
    lcd_delay(2500);

    lcd_screen_init();
    lcd_delay(120);
    lcd_screen_init();
    lcd_delay(120);
    AspiCmd(0xAF);        //dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled

    memset(img, 0, sizeof(img));
    memset(dirty, 0, sizeof(dirty));

    //Clear screen
    for (int y = 0; y < LCD_HEIGHT; y++) {
        lcd_set_row(y);
        AspiCmd(0xAF);
        CLK_HI();
        A0_HI();
        NCS_LO();
        for (int x = 0; x < 212; x++) {
            //write_pixel(((x/53) % 2) ^ ((y / 16) %2));
            write_pixel(0);
        }
        NCS_HI();
        A0_HI();
        AspiData(0);
    }
}
Esempio n. 6
0
void write_pixel(int bit)
{
    for(int i = 0; i < 4; i++) {
        if (bit)
            MOSI_HI();
        else
            MOSI_LO();
        CLK_LO();
        __no_operation();
        CLK_HI();
    }
}
Esempio n. 7
0
/* These are ported from th eopentx driver */
void AspiCmd(u8 Command_Byte)
{
    int i=8;
    A0_LO();
    CLK_HI();
    __no_operation();
    NCS_LO();

    while (i--) {
        CLK_LO();
        if (Command_Byte&0x80)
            MOSI_HI();
        else
            MOSI_LO();

        Command_Byte <<= 1;
        CLK_HI();
        __no_operation();
    }

    NCS_HI();  
    A0_HI();
}
Esempio n. 8
0
/* Screen is 212 x 64 with 4bpp */
void LCD_DrawStop(void)
{
    for (int y = 0; y < LCD_HEIGHT; y++) {
        if(! (dirty[y / 8] & (1 << (y % 8))))
            continue;
        u8 *p = &img[(y / 8) * LCD_WIDTH];
        u8 mask = 1 << (y % 8);

        lcd_set_row(y);
        AspiCmd(0xAF);
        CLK_HI();
        A0_HI();
        NCS_LO();
        for (int x = 0; x < LCD_WIDTH; x++) {
            write_pixel(p[x] & mask);
        }
        NCS_HI();
        A0_HI();
        AspiData(0);
    }
    memset(dirty, 0, sizeof(dirty));
}