Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 20.04.2012, 11:41  
ФmidTrader
Прохожий
 
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ФmidTrader на пути к лучшему
Вопрос lpc1768 + I2C + TIC32

Здравствуйте!
Имеется отладочная плата SK-MLPC1768 и желание выводить информацию на дисплее TIC32 (он тоже есть и уже подключен), но встала загвоздка с передачей в него информации по I2C..
Инициализирую по примеру как здесь, пример для работы с I2C беру отсюда.
Вдруг, кто сталкивался с подобными вещами или знаете какие-то особенности которые я мог упустить подскажите пожалуйста.
Прикрепил набросок своей прошивки.
Вложения:
Тип файла: rar LPC1768_&_TIC32.rar (183.6 Кб, 76 просмотров)
Реклама:
ФmidTrader вне форума  
Сказали "Спасибо" ФmidTrader
warel (28.06.2019)
Непрочитано 20.04.2012, 15:40  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: lpc1768 + I2C + TIC32

У TIC32 две особенности...
Неправильные коэффициенты могут привести к отсутствию изображения...
TIC32 не выдаёт ACK...
st__1 вне форума  
Сказали "Спасибо" st__1
warel (28.06.2019)
Непрочитано 20.04.2012, 15:48  
ФmidTrader
Прохожий
 
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ФmidTrader на пути к лучшему
По умолчанию Re: lpc1768 + I2C + TIC32

Я надеялся, что хоть какой то признак жизни будет подавать...
ФmidTrader вне форума  
Сказали "Спасибо" ФmidTrader
warel (28.06.2019)
Непрочитано 20.04.2012, 15:57  
AndruXXXaUA
Частый гость
 
Регистрация: 25.11.2007
Сообщений: 33
Сказал спасибо: 12
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
AndruXXXaUA на пути к лучшему
По умолчанию Re: lpc1768 + I2C + TIC32

Народ, помогите человеку разобраться с I2C в LPC17xx для начала, может у вас хоть код какой есть?
AndruXXXaUA вне форума  
Сказали "Спасибо" AndruXXXaUA
warel (28.06.2019)
Непрочитано 20.04.2012, 16:24  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: lpc1768 + I2C + TIC32

Сообщение от ФmidTrader Посмотреть сообщение
Я надеялся, что хоть какой то признак жизни будет подавать...
Признак жизни ("мусор" на дисплее) появится только после удачного инита...
st__1 вне форума  
Сказали "Спасибо" st__1
warel (28.06.2019)
Непрочитано 20.04.2012, 16:32  
ФmidTrader
Прохожий
 
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ФmidTrader на пути к лучшему
По умолчанию 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 вне форума  
Сказали "Спасибо" ФmidTrader
warel (28.06.2019)
Непрочитано 23.04.2012, 15:46  
ФmidTrader
Прохожий
 
Регистрация: 04.09.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ФmidTrader на пути к лучшему
По умолчанию 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(); 
 }   
}
На этот раз данные на вывод подаются точно
Но экранчик все равно не реагирует
Подскажите пожалуйста, может какими параметрами по варьировать в самой реализации I2C (к примеру, на счет задержки не уверен).
ФmidTrader вне форума  
Сказали "Спасибо" ФmidTrader
warel (28.06.2019)
 

Закладки

Метки
i2c, lpc1768, lpc17xx, sk-mlpc1768, tic32
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 01:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot