/** * @ingroup SPI-DIO * * @param device_info * @param pins */ void bw_spi_dio_output(const device_info_t *device_info, const uint8_t pins) { char cmd[3]; cmd[0] = device_info->slave_address; cmd[1] = BW_PORT_WRITE_SET_ALL_OUTPUTS; cmd[2] = pins; dio_spi_setup(device_info); FUNC_PREFIX(spi_writenb(cmd, sizeof(cmd) / sizeof(char))); udelay(BW_DIO_SPI_BYTE_WAIT_US); }
/** * @ingroup SPI-DIO * * @param device_info * @param mask */ void bw_spi_dio_fsel_mask(const device_info_t *device_info, const uint8_t mask) { char cmd[3]; cmd[0] = device_info->slave_address; cmd[1] = BW_PORT_WRITE_IO_DIRECTION; cmd[2] = mask; dio_spi_setup(device_info); FUNC_PREFIX(spi_writenb(cmd, sizeof(cmd) / sizeof(char))); udelay(BW_DIO_SPI_BYTE_WAIT_US); }
void bw_spi_dio_output(device_info_t *device_info, uint8_t pins) { char cmd[3]; cmd[0] = device_info->slave_address; cmd[1] = BW_PORT_WRITE_SET_ALL_OUTPUTS; cmd[2] = pins; dio_spi_setup(device_info); bcm2835_spi_writenb(cmd, sizeof(cmd) / sizeof(char)); uwait(BW_DIO_SPI_BYTE_WAIT_US); }
void bw_spi_dio_fsel_mask(device_info_t *device_info, uint8_t mask) { char cmd[3]; cmd[0] = device_info->slave_address; cmd[1] = BW_PORT_WRITE_IO_DIRECTION; cmd[2] = mask; dio_spi_setup(device_info); bcm2835_spi_writenb(cmd, sizeof(cmd) / sizeof(char)); uwait(BW_DIO_SPI_BYTE_WAIT_US); }
void bw_spi_dio_read_id(device_info_t *device_info) { char buf[BW_DIO_ID_STRING_LENGTH + 1]; int i = 0; for (i = 0; i <= BW_DIO_ID_STRING_LENGTH; i++) { buf[i] = '\0'; } buf[0] = device_info->slave_address | 1; buf[1] = BW_PORT_READ_ID_STRING; dio_spi_setup(device_info); bcm2835_spi_transfern(buf, BW_DIO_ID_STRING_LENGTH); uwait(BW_DIO_SPI_BYTE_WAIT_US); printf("[%s]\n", &buf[1]); }