Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.04.2012, 11:41
|
|
Прохожий
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
lpc1768 + I2C + TIC32
Здравствуйте!
Имеется отладочная плата SK-MLPC1768 и желание выводить информацию на дисплее TIC32 (он тоже есть и уже подключен), но встала загвоздка с передачей в него информации по I2C..
Инициализирую по примеру как здесь, пример для работы с I2C беру отсюда.
Вдруг, кто сталкивался с подобными вещами или знаете какие-то особенности которые я мог упустить подскажите пожалуйста.
Прикрепил набросок своей прошивки.
|
|
|
Сказали "Спасибо" ФmidTrader
|
|
|
20.04.2012, 15:40
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
У TIC32 две особенности...
Неправильные коэффициенты могут привести к отсутствию изображения...
TIC32 не выдаёт ACK...
|
|
|
|
20.04.2012, 15:48
|
|
Прохожий
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
Я надеялся, что хоть какой то признак жизни будет подавать...
|
|
|
Сказали "Спасибо" ФmidTrader
|
|
|
20.04.2012, 15:57
|
|
Частый гость
Регистрация: 25.11.2007
Сообщений: 33
Сказал спасибо: 12
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
Народ, помогите человеку разобраться с I2C в LPC17xx для начала, может у вас хоть код какой есть?
|
|
|
Сказали "Спасибо" AndruXXXaUA
|
|
|
20.04.2012, 16:24
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
Сообщение от ФmidTrader
|
Я надеялся, что хоть какой то признак жизни будет подавать...
|
Признак жизни ("мусор" на дисплее) появится только после удачного инита...
|
|
|
|
20.04.2012, 16:32
|
|
Прохожий
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
Моя инициализация:
Код:
|
int main(void)
{
I2C1Init( ); /* initialize I2c1 */
I2CWriteLength[PORT_USED] = 26;
I2CReadLength[PORT_USED] = 0;
I2CMasterBuffer[PORT_USED][0] = PCF8594_ADDR;
I2CMasterBuffer[PORT_USED][1] = 0x00; /* address */
I2CMasterBuffer[PORT_USED][2] = 0x80;
I2CMasterBuffer[PORT_USED][3] = 0x01; // на основн стр
I2CMasterBuffer[PORT_USED][4] = 0x80;
I2CMasterBuffer[PORT_USED][5] = 0x20; // Enable chip, горизонтальная
I2CMasterBuffer[PORT_USED][6] = 0x80;
I2CMasterBuffer[PORT_USED][7] = 0x09; // page select
I2CMasterBuffer[PORT_USED][8] = 0x80;
I2CMasterBuffer[PORT_USED][9] = 0x0d; // 0C - Display Mode: NORMAL, 0D - Inverse mode
I2CMasterBuffer[PORT_USED][10] = 0x80;
I2CMasterBuffer[PORT_USED][11] = 0x05; // MUX-rate: 1/34
I2CMasterBuffer[PORT_USED][12] = 0x80;
I2CMasterBuffer[PORT_USED][13] = 0x14; // Bias system: 3
I2CMasterBuffer[PORT_USED][14] = 0x80;
I2CMasterBuffer[PORT_USED][15] = 0x01; // на основн стр
I2CMasterBuffer[PORT_USED][16] = 0x80;
I2CMasterBuffer[PORT_USED][17] = 0x0A; // page select
I2CMasterBuffer[PORT_USED][18] = 0x80;
I2CMasterBuffer[PORT_USED][19] = 0x08; // voltage multiplication factor: 2*V
I2CMasterBuffer[PORT_USED][20] = 0x80;
I2CMasterBuffer[PORT_USED][21] = 0x20; // temperature coefficient: 0
I2CMasterBuffer[PORT_USED][22] = 0x80;
I2CMasterBuffer[PORT_USED][23] = 0x05; // Vlcd - LOW; Voltage multiplier ON
I2CMasterBuffer[PORT_USED][24] = 0x80;
I2CMasterBuffer[PORT_USED][25] = 0xC4; // Vlcd set
I2CEngine( PORT_USED );
} |
, где :
Код:
|
void I2C1Init( void )
{
LPC_SC-›PCONP |= (1 ‹‹ 19);
/* set PIO0.0 and PIO0.1 to I2C1 SDA and SCL */
/* function to 11 on both SDA and SCL. */
LPC_PINCON-›PINSEL0 &= ~((0x3‹‹0)|(0x3‹‹2));
LPC_PINCON-›PINSEL0 |= ((0x3‹‹0)|(0x3‹‹2));
LPC_PINCON-›PINMODE0 &= ~((0x3‹‹0)|(0x3‹‹2));
LPC_PINCON-›PINMODE0 |= ((0x2‹‹0)|(0x2‹‹2)); /* No pull-up no pull-down */
LPC_PINCON-›PINMODE_OD0 |= ((0x01‹‹0)|(0x1‹‹1)); /* Open drain */
/*--- Clear flags ---*/
LPC_I2C1-›CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;
/*--- Reset registers ---*/
LPC_I2C1-›SCLL = I2SCLL_SCLL;
LPC_I2C1-›SCLH = I2SCLH_SCLH;
/* Install interrupt handler */
NVIC_EnableIRQ(I2C1_IRQn);
LPC_I2C1-›CONSET = I2CONSET_I2EN;
return;
} |
и
Код:
|
uint32_t I2CEngine( uint32_t portNum )
{
/*--- Issue a start condition ---*/
LPC_I2C[portNum]-›CONSET = I2CONSET_STA; /* Set Start flag */
I2CMasterState[portNum] = I2C_BUSY;
while ( I2CMasterState[portNum] == I2C_BUSY )
{
if ( timeout[portNum] ›= MAX_TIMEOUT )
{
I2CMasterState[portNum] = I2C_TIME_OUT;
break;
}
timeout[portNum]++;
}
LPC_I2C[portNum]-›CONCLR = I2CONCLR_STAC;
return ( I2CMasterState[portNum] );
} |
Пусть не смущает PCF8594_ADDR, адрес там 0x78, просто было взято из примера...
Как узнать, что может быть не так?
Последний раз редактировалось ФmidTrader; 20.04.2012 в 16:42.
|
|
|
Сказали "Спасибо" ФmidTrader
|
|
|
23.04.2012, 15:46
|
|
Прохожий
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: lpc1768 + I2C + TIC32
Переписал с применением программного I2C:
Код:
|
#define CON1 0x80
#define CON2 0x40
void i2c_dly(void)
{
uint32_t i;
for ( i = 0; i ‹ 20000; i++ );
}
void i2c_start(void)
{
LPC_GPIO0-›FIOSET = 1 ‹‹ 0; //SDA = 1
i2c_dly();
LPC_GPIO0-›FIOSET = 1 ‹‹ 1; //SCL = 1
i2c_dly();
LPC_GPIO0-›FIOCLR = 1 ‹‹ 0; //SDA = 0
i2c_dly();
LPC_GPIO0-›FIOCLR = 1 ‹‹ 1; //SCL = 0
i2c_dly();
}
void i2c_stop(void)
{
LPC_GPIO0-›FIOCLR = 1 ‹‹ 0; //SDA = 0
i2c_dly();
LPC_GPIO0-›FIOSET = 1 ‹‹ 1; //SCL = 1
i2c_dly();
LPC_GPIO0-›FIOSET = 1 ‹‹ 0; //SDA = 1
i2c_dly();
}
void i2c_write(unsigned char d)
{
char x;
for(x=8; x; x--) {
if(d&0x80) LPC_GPIO0-›FIOSET = 1 ‹‹ 0; //SDA = 1
else LPC_GPIO0-›FIOCLR = 1 ‹‹ 0; //SDA = 0
LPC_GPIO0-›FIOSET = 1 ‹‹ 1; //SCL = 1
d ‹‹= 1;
LPC_GPIO0-›FIOCLR = 1 ‹‹ 1; //SCL = 0
}
LPC_GPIO0-›FIOSET = 1 ‹‹ 0; //SDA = 1
LPC_GPIO0-›FIOSET = 1 ‹‹ 1; //SCL = 1
i2c_dly();
LPC_GPIO0-›FIOCLR = 1 ‹‹ 1; //SCL = 0
}
int main (void)
{
uint32_t i, j;
/* SystemClockUpdate() updates the SystemFrequency variable */
SystemClockUpdate();
LPC_GPIO0-›FIODIR = 0x00000003; /* P0.xx defined as Outputs */
LPC_GPIO0-›FIOCLR = 0x00000003; /* turn off */
//for (;;)
{
i2c_start();
i2c_write(0x78);
i2c_write(0x80); i2c_write(0x01); //
i2c_write(CON1); i2c_write(0x20); // Enable chip,
i2c_write(CON1); i2c_write(0x09); // page select
i2c_write(CON1); i2c_write(0x0D); // Display Mode: Inverse
i2c_write(CON1); i2c_write(0x05); // MUX-rate: 1/34
i2c_write(CON1); i2c_write(0x14); // Bias system: 3
i2c_write(CON1); i2c_write(0x01); //
i2c_write(CON1); i2c_write(0x0A); // page select
i2c_write(CON1); i2c_write(0x08); // voltage multiplication factor: 2*V
i2c_write(CON1); i2c_write(0x20); // temperature coefficient: 0
i2c_write(CON1); i2c_write(0x05); // Vlcd - LOW; Voltage multiplier ON
i2c_write(CON1); i2c_write(0xC4); // Vlcd set
i2c_stop();
for ( i = 0; i ‹ 0x2000000; i++ );
i2c_start();
i2c_write(0x78);
i2c_write(CON2);
for(i = 0; i ‹ 640; i++)
i2c_write(0x00);
i2c_stop();
}
} |
На этот раз данные на вывод подаются точно ![Улыбка](images/smilies/icon_smile.gif)
Но экранчик все равно не реагирует ![Расстроен](images/smilies/icon_sad.gif)
Подскажите пожалуйста, может какими параметрами по варьировать в самой реализации I2C (к примеру, на счет задержки не уверен).
|
|
|
Сказали "Спасибо" ФmidTrader
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Шрифты в TIC32
|
ЯВА |
Микроконтроллеры, АЦП, память и т.д |
7 |
06.03.2011 22:45 |
через месяц изучения lpc1768 вот что сваял, попинайте
|
индюк |
Микроконтроллеры, АЦП, память и т.д |
2 |
26.02.2011 15:14 |
lpc1768 и ком порт в компе -+++
|
индюк |
Микроконтроллеры, АЦП, память и т.д |
9 |
17.01.2011 01:07 |
Опыт применения TIC32 есть у кого?
|
pictele |
Микроконтроллеры, АЦП, память и т.д |
7 |
12.08.2010 22:34 |
TIC32 Vlcd
|
alberio |
Микроконтроллеры, АЦП, память и т.д |
1 |
09.02.2010 21:30 |
Часовой пояс GMT +4, время: 00:33.
|
|