Понадобился SPI на TLSR8253. И что-то я понять не могу: неужели невозможно одновременно читать и писать? Как так?
Попытался что-то такое изобразить:
Не работает, конечно, на выходе то же, что и на входе. А как делать-то? В примерах отдельно чтение, отдельно - запись. Хотя написано в даташите: SPI is a high speed, full duplex and synchronous communication bus...
Неужели ногодрыгом SPI городить? Как-то совсем грустно.
Попытался что-то такое изобразить:
C:
void spi_transfer(unsigned char *Data_in, unsigned char *Data_out, int DataLen, GPIO_PinTypeDef CSPin)
{
gpio_write(CSPin,0); //CS level is low
reg_spi_ctrl &= ~FLD_SPI_DATA_OUT_DIS; ////0x09- bit2 enables spi data output
reg_spi_ctrl |= FLD_SPI_RD; //enable read,0x09-bit3 : 0 for read ,1 for write
/***transfer data***/
for (int i = 0; i < DataLen; i++) {
reg_spi_data = Data_out[i];
Data_in[i] = reg_spi_data;
while(reg_spi_ctrl& FLD_SPI_BUSY );//wait transfer finished
}
gpio_write(CSPin,1);//CS level is high
}
Неужели ногодрыгом SPI городить? Как-то совсем грустно.