|
|
|
@ -86,3 +86,95 @@ void spiWriteBlock(spi_ch_t *spi_ch,
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void spiWrite8bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint8_t bits)
|
|
|
|
|
{
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
spiTrx(spi_ch->spi,bits);
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t spiReadWrite8bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint8_t bits)
|
|
|
|
|
{
|
|
|
|
|
uint8_t buf;
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
buf = spiTrx(spi_ch->spi,bits);
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
return buf;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void spiWrite16bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint16_t bits)
|
|
|
|
|
{
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spi_ch->format == LSB_FIRST) {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
} else {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint16_t spiReadWrite16bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint16_t bits)
|
|
|
|
|
{
|
|
|
|
|
uint16_t buf;
|
|
|
|
|
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spi_ch->format == LSB_FIRST) {
|
|
|
|
|
buf = spiTrx(spi_ch->spi,(uint8_t)(bits >> 8)) << 8;
|
|
|
|
|
buf |= spiTrx(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;
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
|
|
|
|
|
return buf;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void spiWrite32bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint32_t bits)
|
|
|
|
|
{
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spi_ch->format == LSB_FIRST) {
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 32));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 16));
|
|
|
|
|
spiTrx(spi_ch->spi,(uint8_t)(bits >> 8));
|
|
|
|
|
spiTrx(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 >> 32));
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t spiReadWrite32bit(spi_ch_t *spi_ch,
|
|
|
|
|
uint8_t bits)
|
|
|
|
|
{
|
|
|
|
|
uint32_t buf;
|
|
|
|
|
|
|
|
|
|
pinWrite(spi_ch->pin,0);
|
|
|
|
|
if(spi_ch->format == 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));
|
|
|
|
|
} 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;
|
|
|
|
|
}
|
|
|
|
|
pinWrite(spi_ch->pin,1);
|
|
|
|
|
|
|
|
|
|
return buf;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|