Wykluczyłem problem sprzętowy. Mam też LCD PCD8544. Na takim kodzie:
void WriteSPI(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++){
if((data&0x80)==0x80)
SetBit(DATA);
else
ClrBit(DATA);
SetBit(CLK);
ClrBit(CLK);
data<<=1;
}
}
Na pinach które wykorzystuje sprzętowe SPI wszystko działa. Po przepisaniu kodu do postaci:
void WriteSPI(unsigned char data)
{
uint8_t dane;
dane=(uint8_t)data;
switch(HAL_SPI_Transmit(&hspi2, dane, sizeof(data), 5000))
{
case HAL_BUSY: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8,GPIO_PIN_SET); break;
case HAL_ERROR:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9,GPIO_PIN_SET);break;
case HAL_TIMEOUT:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10,GPIO_PIN_SET) ; break;
case HAL_OK:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11,GPIO_PIN_SET) ; break;
}
}
void LCDInit(void)
{
(...)
WriteCmd(0x21);//komendy rozszerzone
(...)
}
Ekran nie działa.
🙁