Гудвин, волшебник (17.06.2012 22:12, просмотров: 179) ответил Гудвин на В общем, заюзал драйвер от NXP... С фреймбуфером вполне удовлетворительно получается. Смотрел на всяческие emWin-ы - лишнее. Весь пар в свисток... Прикрутил к TIC154A, слегка подправив, уже юзанную когда то мной библиотеку от nokia 3310.
Но вот работа с eeprom все-равно через жопу... В отличие, например от вот этого:
void erase_chip(void)
{
unsigned char i;
unsigned int pg;
unsigned int adr;
adr=0;
for(pg=0;pg<512;pg++)
{
#asm("wdr"); ///////////////////
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(adr>>8);
i2c_write(adr);
for (i=0;i<64;i++) {i2c_write(0);adr++;} //для 24с256
// for (i=0;i<128;i++) {i2c_write(0);adr++;} //для 24с512
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(10);
}
}
void page_read(char *str, unsigned int adr )
{
char i;
adr=adr*32; // 32 байт в записи
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(adr>>8);
i2c_write(adr);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
for (i=0;i<31;i++) { *(str++)=i2c_read(1);} // ACK
*(str)=i2c_read(0); // последний байт NO ACK
i2c_stop();
}
void page_write(char *str,unsigned int adr)
{
char i;
adr=adr*32; // 32 байт в записи
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(adr>>8);
i2c_write(adr);
for (i=0;i<32;i++) {i2c_write(*(str++)); }
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(10);
}