完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ti工程师你们好!
我现在使用贵公司的6467平台采集音频数据,数据是由STM32的IIS采集然后通过SPI接口送到6467,6467做主,STM32做从。 目前我已经成功在Linux /dev目录下生成了一个spidev0.0的设备,并且用Linux内核自带的测试程序spidev_test.c测试读写STM32都没问题。主要问题是这样: a、当我开启DMA传送数据时,如果我的用户层程序(spidev_test.c)发送和接收都使用时,进程spidev_test传送一会会进入D状态即阻塞了;但是我改成单向的只读或者只写,测试程序就运行正常,长期测试进程不会出现阻塞的情况。 b、当我关闭DMA传送,使用POLL循环的方式传送数据时,一切都正常,不管是单向传数据还是双向传数据,测试很久进程不会出现阻塞的情况。 鉴于以上的情况,我在想,是不是你们提供的SDK用DMA方式驱动SPI的代码有bug?还是我哪里没有注意到? 附上我的设置: static struct davinci_spi_platform_data dm646x_spi0_pdata = [ .version = SPI_VERSION_1, .num_chipselect = 2, .clk_internal = 1, .cs_hold = 1, .intr_level = 0, .poll_mode = 1, /* 0 -> interrupt mode 1-> polling mode */ .use_dma = 0, /* when 1, value in poll_mode is ignored */ //开启DMA传输 此时poll_mode 无效 如果开启DMA传输就会出现进程阻塞,不开启一切正常。 .c2tdelay = 8, .t2cdelay = 8, ]; |
|
相关推荐
7 个讨论
|
|
物是人非aaa 发表于 2020-4-14 10:24 已经定位了,阻塞在控制器驱动的davinci_spi_bufs_dma函数中的等待EDMA结束。如下处: if (t->tx_buf != NULL) wait_for_completion_interruptible( &davinci_spi_dma->dma_tx_completion); 而且阻塞前,可以成功的读写一次。 PS:我的内核是你们官网提供的最新SDK 2.6.32.rc2 dvsdk 3.10 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
586 浏览 1 评论
427 浏览 1 评论
620 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
910 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
709 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
193浏览 29评论
1155浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
323浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
286浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
135浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 10:40 , Processed in 1.235051 second(s), Total 60, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号