TFT na STM32F103RD

Vedel by mi niekto pomoct s kodom pre TFT displej bez FSMC?? Ide o displej DT028TFT.

moj kod pre konfiguraciu GPIO

void LCD_CtrlLinesConfig(void)
{
  RCC->APB2ENR |= 0x0000003C;                /* Enable GPIOA GPIOB GPIOC clock            */
  GPIOB->CRL   |=  0xBBBBBBBB;								/* Alternate Function push-pull, 50Mhz*/
  GPIOB->CRH   |=  0xBBBBBBBB;								/* Alternate Function push-pull, 50Mhz  */
	
	GPIOA->CRL   |= (0x03UL <<  4);             //nastavenie A1-reset  push/pull 50Mhz
	GPIOA->CRL   |= (0x0BUL <<  0);							//nastavenie A0-CS  Alternate Function push-pull, 50Mhz
	GPIOA->CRL   |= (0x0BUL <<  8);							//nastavenie A2  Alternate Function push-pull, 50Mhz
	GPIOA->CRH   |= (0x0BUL <<  24);							//nastavenie A14-WR  Alternate Function push-pull, 50Mhz
	
	GPIOC->CRL   |= (0xBBBBUL <<  16);             //nastavenie C4 C5 C6 C7  Alternate Function push-pull, 50Mhz
	
}

a pre vysielanie dat do LCD (zrejme nefunkcny)

void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
{
  /* Write 16-bit Index, then Write Reg */
 // LCD->LCD_REG = LCD_Reg;
  /* Write 16-bit Reg */
 // LCD->LCD_RAM = LCD_RegValue;
	int i=0;
	GPIOB->ODR = LCD_Reg;
	GPIOA->ODR = LCD_Reg;
	GPIOC->ODR = (LCD_Reg >> 4);
	
	for(i=0;i==1000;i++);
	
	GPIOA->BSRR=GPIO_BSRR_BS0;
	GPIOA->BSRR=GPIO_BSRR_BS14;
	GPIOC->BSRR=GPIO_BSRR_BS5;
	
	for(i=0;i==1000;i++);
	
	GPIOA->BSRR=GPIO_BSRR_BS14;
	GPIOC->BSRR=GPIO_BSRR_BS5;
	
	for(i=0;i==1000;i++);
	
	GPIOB->ODR = LCD_RegValue;
	GPIOA->ODR = LCD_RegValue;
	GPIOC->ODR = (LCD_RegValue >> 4);
	
	for(i=0;i==10000;i++);
	
	GPIOA->BSRR=GPIO_BSRR_BS14;
	for(i=0;i==10000;i++);
	
	GPIOA->BSRR=GPIO_BSRR_BS14;
}

Proc bez FSMC ?

Lebo STM32F103RD (LQFP64) nema FSMC .

Ok, prehlid sem RD.
Asi je Ti jasny ze i mala chybicka v nastaveni portu zpusobi ze to nepojede. Rozhodne nehodlam kontrolovat ten kod plnej bulharskejch konstant.

nastavenie portov by malo byt OK…uz by len trebalo nejak zosynchronizovat porty pre data. Pre PB by sa dalo pouzit register GPIO->ODR a zvysne cez BSRR a BRR, len neviem ako.

void LCD_CtrlLinesConfig(void)
{
	
  
	GPIO_InitTypeDef GPIO_InitStructure;

 AFIO->MAPR=0x2000000;     //remap JTAG 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC, ENABLE);
  
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 |
                                GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | 
                                GPIO_Pin_9| GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14|
																GPIO_Pin_15;
  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_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  
  
}