|
|
|
@ -59,14 +59,16 @@ void spiInitMaster(spiCH_t spi_hw_ch,
|
|
|
|
|
spiSetFrameFormat(spi_hw_ch,frameFormat);
|
|
|
|
|
|
|
|
|
|
//SPI1->CR1 |= (1<<8) | (1<<9); // SSM=1, SSi=1 -> Software Slave Management
|
|
|
|
|
SPI_BASE->CR1 |= (1 << 8) | (1 << 9);
|
|
|
|
|
//SPI_BASE->CR1 |= (1 << 8) | (1 << 9);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//spiSetSoftwareSlaveManagement(spi_hw_ch,1);
|
|
|
|
|
|
|
|
|
|
//spiSetInternalSlaveSelect(spi_hw_ch,0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//SPI1->CR1 &= ~(1<<10); // RXONLY = 0, full-duplex
|
|
|
|
|
SPI_BASE->CR1 &= ~(1<<10);
|
|
|
|
|
//spiSetComMode(spi_hw_ch, comMode);
|
|
|
|
|
//SPI_BASE->CR1 &= ~(1<<10);
|
|
|
|
|
spiSetComMode(spi_hw_ch, comMode);
|
|
|
|
|
|
|
|
|
|
//SPI1->CR1 &= ~(1<<11); // CRCL =0, 8 bit data
|
|
|
|
|
SPI_BASE->CR1 |= SPI_CR1_CRCL;
|
|
|
|
@ -114,10 +116,10 @@ uint8_t spiReadReg(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
|
|
|
|
|
// send address of target register
|
|
|
|
|
spiTrx(spi_ch->spi, reg_address);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, reg_address);
|
|
|
|
|
|
|
|
|
|
// read from target register
|
|
|
|
|
buf = spiTrx(spi_ch->spi,0x00);
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,0x00);
|
|
|
|
|
|
|
|
|
|
// release target device
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
@ -135,11 +137,11 @@ void spiAutoReadBlock(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
|
|
|
|
|
// send address of starting register
|
|
|
|
|
spiTrx(spi_ch->spi, start_address);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, start_address);
|
|
|
|
|
|
|
|
|
|
// read block from device
|
|
|
|
|
for(;i < buf_len;i++) {
|
|
|
|
|
buffer[i] = spiTrx(spi_ch->spi, 0x00);
|
|
|
|
|
buffer[i] = spiTrx8BitPolling(spi_ch->spi, 0x00);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// release target device
|
|
|
|
@ -153,10 +155,10 @@ void spiWriteReg(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
|
|
|
|
|
// send address of target register
|
|
|
|
|
spiTrx(spi_ch->spi, reg_address);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, reg_address);
|
|
|
|
|
|
|
|
|
|
// write to target register
|
|
|
|
|
spiTrx(spi_ch->spi, data);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, data);
|
|
|
|
|
|
|
|
|
|
// release target device
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
@ -172,11 +174,11 @@ void spiWriteBlock(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
|
|
|
|
|
// send address of starting register
|
|
|
|
|
spiTrx(spi_ch->spi, start_address);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, start_address);
|
|
|
|
|
|
|
|
|
|
// read block from device
|
|
|
|
|
for(;i < data_len;i++) {
|
|
|
|
|
spiTrx(spi_ch->spi, data[i]);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi, data[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// release target device
|
|
|
|
@ -187,7 +189,7 @@ void spiWrite8bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint8_t bits)
|
|
|
|
|
{
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
spiTrx(spi_ch->spi,bits);
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,bits);
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -196,7 +198,7 @@ uint8_t spiReadWrite8bit(spi_ch_t *spi_ch,
|
|
|
|
|
{
|
|
|
|
|
uint8_t buf;
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
buf = spiTrx(spi_ch->spi,bits);
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,bits);
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
return buf;
|
|
|
|
|
}
|
|
|
|
@ -206,11 +208,11 @@ void spiWrite16bit(spi_ch_t *spi_ch,
|
|
|
|
|
{
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spiGetFrameFormat(spi_ch->spi) == SPI_MSB_FIRST) {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
} else {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
@ -222,11 +224,11 @@ uint16_t spiReadWrite16bit(spi_ch_t *spi_ch,
|
|
|
|
|
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spiGetFrameFormat(spi_ch->spi) == SPI_LSB_FIRST) {
|
|
|
|
|
buf = spiTrx(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
} else {
|
|
|
|
|
buf = spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
|
|
|
|
@ -239,15 +241,15 @@ void spiWrite32bit(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
|
|
|
|
|
if(spiGetFrameFormat(spi_ch->spi) == SPI_LSB_FIRST) {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 24));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 16));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 24));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 16));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
} else {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 16));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 24));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 16));
|
|
|
|
|
spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 24));
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
@ -259,15 +261,15 @@ uint32_t spiReadWrite32bit(spi_ch_t *spi_ch,
|
|
|
|
|
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spiGetFrameFormat(spi_ch->spi) == SPI_LSB_FIRST) {
|
|
|
|
|
buf = spiTrx(spi_ch->spi,(uint8_t)(bits >> 24)) << 24;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 16)) << 16;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 24)) << 24;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 16)) << 16;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
} else {
|
|
|
|
|
buf = spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 8)) >> 8;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 16)) >> 16;
|
|
|
|
|
buf |= spiTrx(spi_ch->spi,(uint8_t)(bits >> 24)) >> 24;
|
|
|
|
|
buf = spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 8)) >> 8;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 16)) >> 16;
|
|
|
|
|
buf |= spiTrx8BitPolling(spi_ch->spi,(uint8_t)(bits >> 24)) >> 24;
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
|
|
|
|
|