Код
void DRV8308_WriteRegister(uint8_t address, uint16_t data)
{
//clear bit7 in address
address &= 0x7F;
CS1_HI; //inverse logic!!!
SPI_TransferByte(DRV8308_SPI, address);
SPI_TransferByte(DRV8308_SPI, data>>8);
SPI_TransferByte(DRV8308_SPI, data&0xFF);
CS1_LO;
}
void DRV8308_ReadRegister(uint8_t address, uint16_t *data)
{
uint8_t tmp_data[2]={0};
//set bit7 in address
address |= 0x80;
CS1_HI; //inverse logic!!!
SPI_TransferByte(DRV8308_SPI, address);
tmp_data[0] = SPI_TransferByte(DRV8308_SPI, 0x00);
tmp_data[1] = SPI_TransferByte(DRV8308_SPI, 0x00);
CS1_LO;
*data = (tmp_data[0] << 8) | tmp_data[1];
}
{
//clear bit7 in address
address &= 0x7F;
CS1_HI; //inverse logic!!!
SPI_TransferByte(DRV8308_SPI, address);
SPI_TransferByte(DRV8308_SPI, data>>8);
SPI_TransferByte(DRV8308_SPI, data&0xFF);
CS1_LO;
}
void DRV8308_ReadRegister(uint8_t address, uint16_t *data)
{
uint8_t tmp_data[2]={0};
//set bit7 in address
address |= 0x80;
CS1_HI; //inverse logic!!!
SPI_TransferByte(DRV8308_SPI, address);
tmp_data[0] = SPI_TransferByte(DRV8308_SPI, 0x00);
tmp_data[1] = SPI_TransferByte(DRV8308_SPI, 0x00);
CS1_LO;
*data = (tmp_data[0] << 8) | tmp_data[1];
}
Читаю из регистра 0x2A - дефолтное значение 0x18 - получаю 0x08
Для проверки пишу в регистр 0x07
пишу 0x07 - читаю 0x03
пишу 0x0F - читаю 0x07
пишу 0x09 - читаю 0x00
Подсоеденил логик аналайзер - все сигналы в норме - пин МИСО возвращает правильные значения. Единственно что - на 0x07 и 0x0F последний бит почему то дребезжит.Почему контролер ( STM32F303CB) не читает правильно пин МИСО?