主題:ESM6800的spi可以DMA嗎 共有99296人關注過本帖 |
---|
![]() 蜘蛛偵探 |
1樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
ESM6800的spi可以DMA嗎 ![]() ESM6800的spi可以DMA嗎,或者一次片選能夠傳輸的長度能否超過256byte,比如說1K什么的 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
2樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,ESM6800的spi默認就是啟動了DMA的,一次片選的傳輸數據長度最長為256byte,如果超過這個長度,就只能不使用DMA,通過gpio來做片選,通過GPIO控制,等待全部數據傳輸完成再拉高片選。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 蜘蛛偵探 |
3樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 這兩種方式哪個效率高些? |
單帖管理 | 引用 | 回復 ![]() |
x10 |
4樓 |
![]() |
![]() 肯定是DMA效率更高。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 蜘蛛偵探 |
5樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 我現在要傳送1024byte,每次傳送128,循環8次,但中間大約有100us的間隔,這個屬于正常嗎? |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
6樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,這個是正常的現象,每次傳輸前都需要時間設置SPI控制器,以及填入數據等,傳輸完成后,也需要釋放相關的資源。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 蜘蛛偵探 |
7樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 這里還有一個問題是這樣的, 理論上一次片選能夠傳輸的長度是256byt,但一般傳輸之前會先寫入幾個控制字,比如eprom的地址 tr[0].len = ARRAY_SIZE(tx); --最大只有256 這樣實際每次要小于256,然后為這幾個byte要多來一遍 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
8樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,一次片選傳輸的數據為256byte,這個數據不管是eprom的地址還是eprom的數據,對于SPI總線來說都是傳輸數據,所以是放在一起計算的長度的。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 蜘蛛偵探 |
9樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 這個長度如果能長點就好了,比如說可以把寫入和讀出的分開?有這種可能性嗎 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
10樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,可以單次只進行讀,或者寫,但是讀或者寫所需要的控制或者地址數據,還是需要一起填入。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 蜘蛛偵探 |
11樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 嗯,這樣的話原來只要讀4次,現在必須要讀5次 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
12樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 是的,只能通過軟件上來處理。 |
單帖管理 | 引用 | 回復 ![]() |