| 
 
高级会员 
 
	积分635金钱635 注册时间2018-3-26在线时间107 小时 | 
 
5金钱 
| 如题: 目前想使用IMX6ULL的spi 传输大的文件数据。使用espi3。
 默认使用的是内核中spidev.c中的数据。主要应用就是
 
 1、初始化
 int main(int argc, char *argv[])
 {
 int ret = 0;
 int fd;
 
 parse_opts(argc, argv);
 
 if (input_tx && input_file)
 pabort("only one of -p and --input may be selected");
 
 fd = open(device, O_RDWR);
 if (fd < 0)
 pabort("can't open device");
 
 /*
 * spi mode
 */
 ret = ioctl(fd, SPI_IOC_WR_MODE32, &mode);
 if (ret == -1)
 pabort("can't set spi mode");
 
 ret = ioctl(fd, SPI_IOC_RD_MODE32, &mode);
 if (ret == -1)
 pabort("can't get spi mode");
 
 
 2、收发回环传输
 static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
 {
 int ret;
 int out_fd;
 struct spi_ioc_transfer tr = {
 .tx_buf = (unsigned long)tx,
 .rx_buf = (unsigned long)rx,
 .len = len,
 .delay_usecs = delay,
 .speed_hz = speed,
 .bits_per_word = bits,
 };
 。。。
 。。。
 。。。
 }
 
 
 这个虽然能收发,但是相当的慢,配置20M spi时钟,收发30M的文件、数组。耗时30多秒,这个也太慢了。。。。
 而且一次最大只能发送4096字节
 
 所以想考虑 有没有能用linux 的spi dma收发
 
 
 
 求教
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 |