static int ssd1322_init(desc_t desc_w)
{
	uchar8_t data[3];
	int i;
   
   ssd1322_reset(desc_w);

	ssd1322_write_command(desc_w, SET_COMMAND_LOCK);
	data[0] = 0x12;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SLEEP_MODE_ON);

	ssd1322_write_command(desc_w, SET_FRONT_CLOCK_DIVIDER);
	data[0] = 0x91; /*0x91*/;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_MUX_RATIO);
	data[0] = 0x3f;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_DISPLAY_OFFSET);
	data[0] = 0x00;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_DISPLAY_START_LINE);
	data[0] = 0x00;
	ssd1322_write_data(desc_w, &data[0], 1);
   
 
	ssd1322_write_command(desc_w, 0xa0);
	data[0] = 0x14;
	data[1] = 0x11;
	ssd1322_write_data(desc_w, &data[0], 2);

	ssd1322_write_command(desc_w, SET_GPIO);
	data[0] = 0x00;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, FUNCTION_SELECTION);
	data[0] = 0x01;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, 0xb4);
	data[0] = 0xa0;
	data[1] = 0xfd;
	ssd1322_write_data(desc_w, &data[0], 2);

   ssd1322_write_command(desc_w, MASTER_CONTRAST_CURRENT);
	data[0] = 0x0f;
	ssd1322_write_data(desc_w, &data[0], 1);
   
	ssd1322_write_command(desc_w, SET_CONTRAST_CURRENT);
	data[0] = 0x9f;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SELECT_DEFAULT_GRAYSCALE);
   //ssd1322_set_gray_scale_table(desc_w);

	ssd1322_write_command(desc_w, SET_PHASE_LENGTH);
	data[0] = 0xe2; /*0xe2*/;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, 0xd1);
	data[0] = 0x82;
	data[1] = 0x20;
	ssd1322_write_data(desc_w, &data[0], 2);

	ssd1322_write_command(desc_w, SET_PRECHARGE_VOLTAGE);
	data[0] = 0x1f;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_SECOND_PRECHARGE_PERIOD);
	data[0] = 0x08; /*0x08*/;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_VCOMH);
	data[0] = 0x07;
	ssd1322_write_data(desc_w, &data[0], 1);

	ssd1322_write_command(desc_w, SET_DISPLAY_MODE_NORMAL);
   
   //ssd1322_write_command(desc_w, EXIT_PARTIAL_DISPLAY);
   
	ssd1322_write_command(desc_w, SLEEP_MODE_OFF);


   //
   //! Set the row
	ssd1322_write_command(desc_w, SET_ROW_ADDRESS);
	data[0] = 0x00;
	data[1] = 0x3f;//0x7F;//0x3f;
	ssd1322_write_data(desc_w, &data[0], 2);

	//! Set the column
	ssd1322_write_command(desc_w, SET_COLUMN_ADDRESS);
	data[0] = 0x1c;//0x00;//0x1c;
	data[1] = 0x1c+0x3F;//0x77;//0x5b;
	ssd1322_write_data(desc_w, &data[0], 2);
   
   //to remove test: fill all
   ssd1322_write_command(desc_w, WRITE_RAM_COMMAND);
   //
   memset(link_info_oled_ssd1322.p_fbuf,0x11,OLED_DISPLAY_SIZE/2);
	ssd1322_write_data(desc_w, link_info_oled_ssd1322.p_fbuf, OLED_DISPLAY_SIZE/2);
   //
   __kernel_usleep(1000000); //1s 
   //
   memset(link_info_oled_ssd1322.p_fbuf,0x00,OLED_DISPLAY_SIZE/2);
	ssd1322_write_data(desc_w, link_info_oled_ssd1322.p_fbuf, OLED_DISPLAY_SIZE/2);
   
   //
   memset(link_info_oled_ssd1322.p_fbuf,0x11,1);
   memset(link_info_oled_ssd1322.p_fbuf+(256/2),0x11,1);
   memset(link_info_oled_ssd1322.p_fbuf+2*(256/2),0x11,1);
   memset(link_info_oled_ssd1322.p_fbuf+3*(256/2),0x11,1);
   memset(link_info_oled_ssd1322.p_fbuf+4*(256/2),0x11,1);
   ssd1322_write_data(desc_w, link_info_oled_ssd1322.p_fbuf, OLED_DISPLAY_SIZE/2); 
   
	return 0;
}
Exemplo n.º 2
0
/*-------------------------------------------
| Name:_system_usleep
| Description:
| Parameters:
| Return Type:
| Comments:
| See:
---------------------------------------------*/
int _system_usleep(useconds_t useconds) {
    __kernel_usleep(useconds);
    return 0;
}