Здравствуйте.
Вопрос вот в чем. Имеется МК PIC p24FJ128GA010. К нему подключен TFT Ampire AM240320jtnqw00h-a, работающий на драйвере hx8312-a. распиновка следующая:
Подключение дисплея по номерам
1, 2 ground
3 (NCS) - RD10 (CS2)
4 (RS) - RB15 (PMA0)
5 (NWR) - RD4 (PMWR)
6 (RD) - RD5(PMRD)
7 (RESET) - RD9
8-15 (D0-D7) - RE0-RE7 (PMD0-PMD7)
...
26 (PSX) - RA14
27, 28 (BWS1-0) - питание VCC
29 (DTX2) - аналогично
30 (DTX1) - ground
31 - 33 (BWS2, SDI, VCL) - питание
34 (VSYNC) - RG6
35 (HSYNC) - RG7
36 (DOTCLK) - RG8
37 not connected
38 (RGB/CPU) - RA15
39 VCC
40 (VCI) - VCC
Для общения с экраном выбран PMP.
Проблема в том, что на экран не передаются данные. В чем может быть ошибка? сразу уточняю, что закороток никаких нет - проверяли, на шину данных все выставляется, не происходит изменения уровня пинов записи и чтения (закороток между ними нет). Уровень высокий (только изредка прерывается, но не меняется - показания осциллографа), запись должна происходить на низком
Пример кода инициализации PMP и подпрограмм записи:
Код:
|
void TFTinit( void)
{
BYTE value1;
int i,j;
// PMP intialization
RST = 0; // Put TFT to reset
TRISDbits.TRISD9 = 0;
TRISBbits.TRISB15 = 0;
CS = 0;
TRISDbits.TRISD10 = 0;
LATAbits.LATA14=0; /* PSX = 0 */
LATAbits.LATA15=0; /* RGB/CPU=0 */
// TRISDbits.TRISD4 = 0;
// TRISDbits.TRISD5 = 0;
PMMODE = 0;
PMPEN = 0;
PMCON = 0;
PMMODEbits.MODE = 2 ;
PMMODEbits.WAITB = 1;
PMMODEbits.WAITM = 3;
PMMODEbits.WAITE = 0;
PMMODEbits.MODE16 = 0; // 8 bit mode
PMCONbits.PTRDEN = 1; // enable RD line
PMCONbits.PTWREN = 1; // enable WR line
PMCONbits.PMPEN = 1; // enable PMP
DelayMs(40);
RST = 1; /* LSI starts */
DelayMs(400); |
Код:
|
void SetReg(BYTE index, BYTE value)
{
CS = 0;
RS = 0;
DeviceWrite(index);
DeviceWrite(value);
CS = 1;
}
inline void DeviceWrite(BYTE data)
{
PMDIN1 = data;
PMPWaitBusy();
} |