为什么读的SPI Flash的设备号为0XFF?收发使用两个spi_ioc_transfer 也不行。谢谢了

yaletracy 2019-09-11 11:54:45
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;
}
...全文
548 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaletracy 2019-09-11
  • 打赏
  • 举报
回复
救命啊,大神来帮帮忙,没有经验

1,317

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧