为什么读的SPI Flash的设备号为0XFF?收发使用两个spi_ioc_transfer 也不行。谢谢了
int main()
{
int ret;
int mode = SPI_MODE_3;
int bits = 8;
double speed = 133000000;
int fd;
fd = open("/dev/spidev0.0", O_RDWR);
if(fd < 0)
printf("open spidev0.0 failed\n");
else
printf("open spidev0.0 success\n");
ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
if(ret < 0)
printf("cannot set spi mode\n");
else
printf("set spi mode success\n");
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
if(ret < 0)
printf("cannot set bits per word\n");
ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
if(ret < 0)
printf("cannot set max speed hz\n");
char tx_buf[4];
char rx_buf[4] = { 0x00, 0x00, 0x00, 0x00 };
tx_buf[0] = 0x90;
tx_buf[1] = 0x00;
tx_buf[2] = 0x00;
tx_buf[3] = 0x00;
struct spi_ioc_transfer xfer;
memset(&xfer, 0, sizeof(xfer));
xfer.tx_buf = tx_buf;
xfer.rx_buf = rx_buf;
xfer.len = 4;
xfer.speed_hz = speed;
xfer.bits_per_word = bits;
ret = ioctl(fd, SPI_IOC_MESSAGE(1), &xfer);
printf("ioctl ret:%d\n", ret);
printf("0x%x\n", rx_buf[0]);
printf("0x%x\n", rx_buf[1]);
printf("0x%x\n", rx_buf[2]);
printf("0x%x\n", rx_buf[3]);
close(fd);
return 0;
}