コード例 #1
0
ファイル: bf_master.c プロジェクト: cmr/bfcpu
int main (void) {
	init();
	led_on();
	uart_str("Hello!\r\n");
	spi_slave();
	led_off();
	while (1) {
		switch (spi_recv()) {
			case 0: break;
			case 1:
				// CPU wants to read a value. this means we are now the master, to transfer the value back.
				spi_master();
				spi_send(uart_read());
				spi_slave();
				break;
			case 2:
				// CPU wrote a value. Output it to serial.
				uart_write(spi_recv());
				break;
			default:
				break;
		}
	}
}
コード例 #2
0
ファイル: spitest.c プロジェクト: FreeRTOSHAL/testsystem
void spitest_init() {
#if 1
	struct spi *spi;
	static struct spi_slave *slave[3];
	struct spi_opt opt = {
		.lsb = false,
		.cpol = false,
		.cpha = false,
		.cs = 0,
		.csLowInactive = false,
		.gpio = SPI_OPT_GPIO_DIS,
		.size = 8,
		.wdelay = 0,
		.cs_hold = 8,
		.cs_delay = 500,
		.bautrate = 500000,
	};
	spi = spi_init(1, SPI_3WIRE_CS, NULL);
	CONFIG_ASSERT(spi != NULL);
	slave[0] = spiSlave_init(spi, &opt);
	CONFIG_ASSERT(slave[0] != NULL);
	opt.cs_hold = 6;
	opt.cs_delay = 8;
	opt.cs = 1;
	slave[1] = spiSlave_init(spi, &opt);
	CONFIG_ASSERT(slave[1] != NULL);
	opt.cs = 2;
	slave[2] = spiSlave_init(spi, &opt);
	CONFIG_ASSERT(slave[2] != NULL);
#else
	struct spi *spi;
	static struct spi_slave *slave[3];
	struct spi_ops ops = {
		.lsb = false,
		.cpol = false,
		.cpha = false,
		.cs = SPI_OPT_CS_DIS,
		.csLowInactive = false,
		.gpio = PTD5,
		.size = 8,
		.wdelay = 0,
		.cs_hold = 8,
		.cs_delay = 500,
		.bautrate = 500000,
	};
	spi = spi_init(1);
	CONFIG_ASSERT(spi != NULL);
	ops.cpol = false;
	ops.cpha = false;
	ops.gpio = PTD5; /* CS 0 */
	slave[0] = spi_slave(spi, &ops);
	CONFIG_ASSERT(slave[0] != NULL);
	ops.cpol = false;
	ops.cpha = false;
	ops.cs_hold = 6;
	ops.cs_delay = 8;
	ops.gpio = PTD4; /* CS 1 */
	slave[1] = spi_slave(spi, &ops);
	CONFIG_ASSERT(slave[1] != NULL);
	ops.cpol = false;
	ops.cpha = false;
	ops.gpio = PTD3; /* CS 2 */
	slave[2] = spi_slave(spi, &ops);
	CONFIG_ASSERT(slave[2] != NULL);
#endif

	OS_CREATE_TASK(spiTask, "SPI Test Task", 512, slave, 1, taskSPI);
}