高级会员
- 积分
- 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收发
求教
|
|