Witam
Mam dziwny problem z moim STM32.
Układ składa się z mikrokontrolera i układu podłączonego do SPI2 (kostka ADS7843).
1. Zasilanie wyłączone
2. Włączam zasilanie
3. Spi nie działa, wysyłam ramki ale w odpowiedzi dostaje śmieci (Nie mam peności czy spi wysyła cokolwiek)
4. Reset mikrokontrolera (ADS7843 cały czas zasilany, nie resetuje sie)
5. Wszystko działa poprawnie !!
SPI2 Zaczyna się komunikować dopiero po resecie mikrokontrolera. Dodawałem opóźnienia, podćiągłem pin CS do plusa i ciągle to samo.
Po Resecie zawsze wszystko działa dobrze. Nie mam już pomysłu co może być nietak.
Mam dziwny problem z moim STM32.
Układ składa się z mikrokontrolera i układu podłączonego do SPI2 (kostka ADS7843).
1. Zasilanie wyłączone
2. Włączam zasilanie
3. Spi nie działa, wysyłam ramki ale w odpowiedzi dostaje śmieci (Nie mam peności czy spi wysyła cokolwiek)
4. Reset mikrokontrolera (ADS7843 cały czas zasilany, nie resetuje sie)
5. Wszystko działa poprawnie !!
SPI2 Zaczyna się komunikować dopiero po resecie mikrokontrolera. Dodawałem opóźnienia, podćiągłem pin CS do plusa i ciągle to samo.
void SPI2_Start(void)
{
/* GPIO INIT */
HW_GPIO_Config(GPIOB, 10,(GPIO_MODE_50MHZ|GPIO_CNF_OUT_PP)); //CS
HW_GPIO_Config(GPIOB, 13,(GPIO_MODE_50MHZ | GPIO_CNF_AF_PP )); //SCK
HW_GPIO_Config(GPIOB, 14,(GPIO_MODE_IN | GPIO_CNF_IN_FLO)); //MISO
HW_GPIO_Config(GPIOB, 15,(GPIO_MODE_50MHZ | GPIO_CNF_AF_PP )); //MOSI
TOUCH_CS_SET;
/* SPI2 ON */
SPI2->CR1 = SPI_CR1_SSM | SPI_CR1_SSI |
SPI_CR1_BR_2 | SPI_CR1_BR_1 |
SPI_CR1_MSTR;
SPI2->CR1 |= SPI_CR1_SPE;
}uint8_t Touch_send_byte(uint8_t byte) //send control byte
{
while(SPI2->SR & (1<<7)); // while spi busy
SPI2->DR = byte;
while(SPI2->SR & (1<<7)); // while spi busy
return 1;
}
uint8_t Touch_read_byte(void)
{
uint8_t get;
SPI2->DR = 0;
while((SPI2->SR & (1<<0))==0); //RX not buffer empty
get = SPI2->DR;
return get;
}Po Resecie zawsze wszystko działa dobrze. Nie mam już pomysłu co może być nietak.