forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Zprovoznění dotykové vrstvy - CAN BUS driver

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM
 
Prochy
Anonymní





PříspěvekZaslal: 27 září 2013, 9:54    Předmět: Zprovoznění dotykové vrstvy - CAN BUS driver Citovat

Zdravim,

mám tento kit a rád bych u něj zprovoznil dotykový displej. Bohužel k tomu nemůžu najít pořádnou dokumentaci, aby se mi to podařilo zprovoznit. Jediný sem k tomu našel je schéma kitu. Ale z toho nejsem asi schopnej na to příjit jak to zprovoznit. Na jedné stránce jsem našel, že to má dotykovou vrstvu TSC2046, ale stejně mi to nepomůže, když nevím kde jsou ty dané piny na dané desce vyvedeny. Jak můžu docílit jeho zprovoznění? Děkuji

Další otázka, abych nezakládal další téma. Na tom kitu, je možnost využití CAN komunikace. Nutné připojit převodník na diferenciální logiku. Je to možné sehnat někde v ČR už sestavené, jako zde na ebayi? Nemám potřebné vybavení, abych si to sám postavil. A je možné sehnat levně další zařízení, které třeba jen vysílá po CAN sběrnici údaje, další kit se mi kupovat nechce. Třeba nějaký teploměr otáčkoměr nebo něco jednoduchého, aby se cena pohybovala do 500 Kč, jestli to je tedy reálný.

Děkuji za jakoukoliv odpověď Smile

Arrow administrator: přejmenováno z "Zprovoznění dotykové vrstvy"
Návrat nahoru
 

 
Prochy
Anonymní





PříspěvekZaslal: 27 září 2013, 15:24    Předmět: Citovat

Tak už sem nejspíš zjistil, že to bude komunikovat přes SPI, takže to budou piny na TFT 2468. Zkusím to zprovoznit, poté dám vědět.
Návrat nahoru
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 461

PříspěvekZaslal: 29 září 2013, 23:16    Předmět: Citovat

Bude to komunikovat. Mám stejnej kit doma. Ohledně CANu se koukni tady - http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010404
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 461

PříspěvekZaslal: 29 září 2013, 23:22    Předmět: Citovat

CAN BUS driver treba PCA82C250
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Prochy
Anonymní





PříspěvekZaslal: 30 září 2013, 20:53    Předmět: Citovat

Radius: Děkuji

Co se týče té dotykové vrstvy, tak už se mi ji podařilo zprovoznit, sice s pomocí ukázkových kódů, ale funguje to. Zde je kód:
kód:
void initTouch(void){

  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;

  //SPI1 Periph clock enable
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
   //SPI2 Periph clock enable
 // RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE ) ;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure PB.12 as Output push-pull, used as Flash Chip select */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;           //SPI1 CS1
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //SPI1 CS4
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;           //SPI1 NSS
  GPIO_Init(GPIOA, &GPIO_InitStructure);
 
  GPIO_SetBits(GPIOC, GPIO_Pin_4);         //SPI CS1
  GPIO_SetBits(GPIOB, GPIO_Pin_12);         //SPI CS4
  GPIO_SetBits(GPIOA, GPIO_Pin_4);         //SPI NSS   
 
  // SPI3 Config 
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;   //SPI_NSS_Hard
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1,&SPI_InitStructure);

  // SPI1 enable 
  SPI_Cmd(SPI1,ENABLE); 
}


unsigned char SPI_WriteByte(unsigned char data)
{
 unsigned char Data = 0;

   //Wait until the transmit buffer is empty
  while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
  // Send the byte 
  SPI_I2S_SendData(SPI1,data);

   //Wait until a data is received
  while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
  // Get the received data
  Data = SPI_I2S_ReceiveData(SPI1);

  // Return the shifted data
  return Data;


void SpiDelay(unsigned int DelayCnt)
{
 unsigned int i;
 for(i=0;i<DelayCnt;i++);
}

u16 getTouchX(void)
{
   u16 x=0;
   GPIO_ResetBits(GPIOB, GPIO_Pin_7);
   SpiDelay(10);
   SPI_WriteByte(0x90);
   SpiDelay(10);
   x=SPI_WriteByte(0x00);
   x<<=8;
   x+=SPI_WriteByte(0x00);
   SpiDelay(10);
   GPIO_SetBits(GPIOB, GPIO_Pin_7);
   x = x>>3;
   return (x);
}

u16 getTouchY(void)
{
   u16 y=0;
  GPIO_ResetBits(GPIOB, GPIO_Pin_7);
  SpiDelay(10);
  SPI_WriteByte(0xD0);
  SpiDelay(10);
  y=SPI_WriteByte(0x00);
  y<<=8;
  y+=SPI_WriteByte(0x00);
  SpiDelay(10);
  GPIO_SetBits(GPIOB, GPIO_Pin_7);
  y = y>>3;
  return (y);
}


Měl by otázku k části získání hodnoty dané souřadnice. Kde zjistim, že je nutné nejprve poslat 0xD0 pro y nebo 0x90 pro x? Díval sem se do datasheetu Touch Controlleru, ale nic takovýho sem tam nenašel. Přiznávám, že se v datasheetech pořádně neorientuji, ale rád bych se tomu více přiučil.

Děkuji
Návrat nahoru
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 461

PříspěvekZaslal: 30 září 2013, 21:58    Předmět: Citovat

Tak to si to čtení odfláknul. Nevím sice jestli máš stejnej katalogovej list (existuje víc výrobců tohoto obvodu) ale když si najdeš tu část co popisuje komunikační protokol tohoto obvodu tak zjistíš že na úvod komunikace MCU musí poslat byte který obsahuje bity S, A2,A1,A0,MODE,SER/DFR,DP1,PD0. Podle toho co v nich je, obvod vrátí tu nebo tu hodnotu. Co vrátí je popsáno o několik stránek výše v tabulce. Je to velmi jednoduché.
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Prochy
Anonymní





PříspěvekZaslal: 01 říjen 2013, 9:35    Předmět: Citovat

Děkuji, teď už to vidim. Jak říkám v datasheetech se pořádně ještě neorientuji, je to hlavně mojí slabší angličtinou. Ještě jednou děkuji.
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)