主题:ESM6800的spi可以DMA吗 共有50914人关注过本帖 |
---|
蜘蛛侦探 |
1楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
ESM6800的spi可以DMA吗 Post By:2019-9-23 13:55:00 [只看该作者]
ESM6800的spi可以DMA吗,或者一次片选能够传输的长度能否超过256byte,比如说1K什么的 |
单帖管理 | 引用 | 回复 |
hzc |
2楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2019-9-23 14:31:00 [只看该作者]
你好,ESM6800的spi默认就是启动了DMA的,一次片选的传输数据长度最长为256byte,如果超过这个长度,就只能不使用DMA,通过gpio来做片选,通过GPIO控制,等待全部数据传输完成再拉高片选。 |
单帖管理 | 引用 | 回复 |
蜘蛛侦探 |
3楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2019-9-23 15:23:00 [只看该作者]
这两种方式哪个效率高些? |
单帖管理 | 引用 | 回复 |
x10 |
4楼 |
Post By:2019-9-23 15:52:00 [只看该作者]
肯定是DMA效率更高。 |
|
单帖管理 | 引用 | 回复 |
蜘蛛侦探 |
5楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2019-9-23 16:02:00 [只看该作者]
我现在要传送1024byte,每次传送128,循环8次,但中间大约有100us的间隔,这个属于正常吗? |
单帖管理 | 引用 | 回复 |
hzc |
6楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2019-9-23 17:27:00 [只看该作者]
你好,这个是正常的现象,每次传输前都需要时间设置SPI控制器,以及填入数据等,传输完成后,也需要释放相关的资源。 |
单帖管理 | 引用 | 回复 |
蜘蛛侦探 |
7楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2019-9-24 11:48:00 [只看该作者]
这里还有一个问题是这样的, 理论上一次片选能够传输的长度是256byt,但一般传输之前会先写入几个控制字,比如eprom的地址 tr[0].len = ARRAY_SIZE(tx); --最大只有256 这样实际每次要小于256,然后为这几个byte要多来一遍 |
单帖管理 | 引用 | 回复 |
hzc |
8楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2019-9-24 12:54:00 [只看该作者]
你好,一次片选传输的数据为256byte,这个数据不管是eprom的地址还是eprom的数据,对于SPI总线来说都是传输数据,所以是放在一起计算的长度的。 |
单帖管理 | 引用 | 回复 |
蜘蛛侦探 |
9楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2019-9-24 13:28:00 [只看该作者]
这个长度如果能长点就好了,比如说可以把写入和读出的分开?有这种可能性吗 |
单帖管理 | 引用 | 回复 |
hzc |
10楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2019-9-24 13:40:00 [只看该作者]
你好,可以单次只进行读,或者写,但是读或者写所需要的控制或者地址数据,还是需要一起填入。 |
单帖管理 | 引用 | 回复 |
蜘蛛侦探 |
11楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2019-9-24 13:57:00 [只看该作者]
嗯,这样的话原来只要读4次,现在必须要读5次 |
单帖管理 | 引用 | 回复 |
hzc |
12楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2019-9-24 17:06:00 [只看该作者]
是的,只能通过软件上来处理。 |
单帖管理 | 引用 | 回复 |