Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

我的需求是是一級 I2C 通信,四个公用一个,不是 QSPI,四个立送的,大于等于 20MHZ,用 UDB 可以?

我使用的芯片是 CY8C6247AZI-D54,有 12 個,我用 IO 口模組的通信如附件。

1 解決方案
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

@yiru_1705901

附上是一個 PSoC 創建者入門項目。 該項目將經過應用程序構建階段(即。 頂部設計沒有錯誤)但是 main_cm4.c 代碼不完整,會引發錯誤。(您需要填寫缺少的代碼。)。

這是 TopDesign,將所有 3 個 SPI 通道鏈接到一個可以同時啟用和禁用的時鐘。 這應該同步所有 SPI 通道,以便您可以使用一個時鐘。

Len_CONSULTRON_0-1697988676767.png

Clock_RGB 具有 _Enable () 和 _Disable () API 呼叫來啟動和停止 SPI 的源時鐘。

另外,我只使用一個 DMA 通道。如果您願意,您可以為每個通道使用單獨的 DMA。 但是,一個通道具有 3 個 TD,您可以使用一個 DMA 事件從不同的記憶體區域移動 3 個單詞的資料。

另請注意,源時脈為 80MHz,每個 SPI 通道僅使用 4x 超採樣。使用這些參數,SPI 時脈輸出視需求為 20Mbps。

另一個注意:我提供的項目適用於 CY8C6247 B ZI-D54 CPU。 您目標的 CY8C6247 ZI-D54 在我的 PSoC 創建器版本中不存在。 此零件可能是 Infineon 不再支援的舊零件。諮詢英菲尼翁。

在原始文章中檢視解決方案

0
19 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

如果你使用創建者 IDE,可以考慮子 https://community.infineon.com/t5/PSoC-6/How-can-I-instantiate-a-UDB-based-I2C-UART-Controller-with-...我在里面上,已經移植了好的 PSOC6-UDB-I2C 件

 

如果使用模組的工具,就要麻麻一些,因為 MTB 有法直接使用創作者 UDB 件,也有與的 UDB 工具,所以需要將 UDB 放置來自創者中 .c 的方式出之後,可以使用 MTB 的方式,步驟和方法考 https://forum.onethinx.com/t/udb-porting-tool-export-the-udb-configuratio...

0
Translation_Bot
Community Manager
Community Manager
Community Manager

更正一下,是一个和 4 个信号,除了 RGB 三个色信号有一个命令信号(固定值 0x01),每个信号出是需要一个 UDB,我不知道信号不需要 UDB,如果是不要要,那就是 4 個就可以個功能,大哥方便我,我個功能比,就是送

0
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

不好意思我的描述清除,我的需求是用 PSOC6 刷的(控制制 192*192 個三色),一個和三個 (RGB) 色,我的口模式可以正常通信,但是速太度慢刷不是來,代如附件我的創作者,我的創作者也是天的,我的創作者是我的在 UDB 的料,感是可以做的,但是不知道怎么下手,我對方便不是很熟悉,正在看 UDB 相文。你把 I2C 件的資源我考一下,或者可以加下你联系方式?

0
Translation_Bot
Community Manager
Community Manager
Community Manager

我更正一下,是一个和 4 个信号,除了 RGB 三个色信号有一个命令信号(固定值 0x01),每个信号是需要一个 UDB,我不知道信号不需要 UDB,如果是不是需要,那就是 4 UDB 就可以個功能,大哥方便我個人,我個功能比,就是送

0
Translation_Bot
Community Manager
Community Manager
Community Manager

我在的大致思路是,4 个公用一个,每个 UDB 判斷数据路出 FIFO 不是,不填充,通移位寄存器送出去,完后判斷 FIFO 為空,行其他理

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@yiru_1705901

您可以使用 SPI 代替 I2C 嗎?

如果是這樣,您必須先確保所有數據(R,G 和 B)都被加載到 FIFO 中,然後啟動 SPI Tx 以啟動。啟動後,您可以使用 CPU(如果速度足夠快)或 DMA 繼續載入連續的 RGB 資料流。

注意:由於您嘗試使用 1 時鐘,所有數據必須在每次 R,G 和 B 傳輸時鐘開始之前預先加載到 FIFO 中。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

是的,我同意,I2C 不是一個好的起點

不考慮設計定制元件(這對大多數客戶來說可能很困難),我可以問您的想法是否是使用 3 個獨立 SPI 組件加上 DMA 和數字邏輯來實現三個同步序列信號?

我正在考慮使用 3 換檔寄存器組件加上 DMA + 數字邏輯來實現相同的功能可能更容易。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

可以,能夠例程序我,非常感謝

 

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

之前我也想使用 SPI 去,但是很 3 個小的同一次

0
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

@yiru_1705901

附上是一個 PSoC 創建者入門項目。 該項目將經過應用程序構建階段(即。 頂部設計沒有錯誤)但是 main_cm4.c 代碼不完整,會引發錯誤。(您需要填寫缺少的代碼。)。

這是 TopDesign,將所有 3 個 SPI 通道鏈接到一個可以同時啟用和禁用的時鐘。 這應該同步所有 SPI 通道,以便您可以使用一個時鐘。

Len_CONSULTRON_0-1697988676767.png

Clock_RGB 具有 _Enable () 和 _Disable () API 呼叫來啟動和停止 SPI 的源時鐘。

另外,我只使用一個 DMA 通道。如果您願意,您可以為每個通道使用單獨的 DMA。 但是,一個通道具有 3 個 TD,您可以使用一個 DMA 事件從不同的記憶體區域移動 3 個單詞的資料。

另請注意,源時脈為 80MHz,每個 SPI 通道僅使用 4x 超採樣。使用這些參數,SPI 時脈輸出視需求為 20Mbps。

另一個注意:我提供的項目適用於 CY8C6247 B ZI-D54 CPU。 您目標的 CY8C6247 ZI-D54 在我的 PSoC 創建器版本中不存在。 此零件可能是 Infineon 不再支援的舊零件。諮詢英菲尼翁。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

非常感謝,我看看

0
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

@yiru_1705901 我一下目前的思路。首先我不建議你的基于一起去定制化模式,然Len 和我的思路都是將用目前已有的硬件模式,無是使用 SPI 模式是級位移模,都是基於在其已包含 FIFO 部分,相比而言 SPI 更好一些,因為對其 FIFO 有一定的深度,更多合緩衝區大量的。

至于三路的同步,我為个容易解决。附件工程中的截圖部分,了一個 1500+ 位元組送出的功能,其中首次送的可以利用控制登錄提供一個觸發器來,如果三個對個 MSPI 配合的三個立的 DMA 和使用同一個控制登錄提供觸發信号,那么三路信号同步是可以的。

Vison_Zhang_0-1698022961661.png

 

如何使用 PSoC6 中的 DMA,您可以參考我的範例程序,也可以閱讀AN228753 - PSoC™ 6 MCU 直接記憶體存取 (DMA) 的使用

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Vison_Zhang

我看過你的項目我看到您如何在使用 DMA 的時候將所有 3 個單詞加載到 3 個 SPI FIFO 中。

但是,如果您有 3 個單獨的 SPI,我不看到您如何保證同步它們,以便可以使用相同的 SPI CLK 信號。由於載入每個 SPI FIFO 需要特定的時間,且每個 FIFO 都必須一次加載,這意味著 SPI HW 幾乎立即啟動數據可用。因此,第一個 SPI Tx 將首先發生,第二個 SPI Tx 將開始第二,第三個 SPI Tx 將開始第三。每個 SPI 數據可能都會從延遲開始時間添加的延遲。

當客戶定位的目標時,所需的數據速率為 20Mbps 時,這更糟糕。 如果數據速率慢得多,則可能不是很大的問題。

使用常見的外部時鐘和使用 _Enable () API 調用是我看到的唯一方法來保證同步。如果 SPI(SCB)或 SPI UDB 具有硬件啟用,這基本上就是相當的。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Len_CONSULTRON 我的項目只是用於指導客戶如何使用 DMA+SPI 實現數據傳輸。

回到原始問題,下面的示意是我想想的:控制寄存器初始輸出低,所有三個 MSPi 的 TX FIFO 等級都設置為 1,因此當 MSPi 在 fw 中啟動 MSPi 時,tx_dma 終端仍保持活動一次(MSPI_start()),但由於 AND 閘,所有三個 DMA 都無法觸發。 一旦控制定輸出高,所有三個 DMA 都將同時觸發,並將數據從位於 SRAM 中的 3 個不同陣列發送到相應的 MSPi FIFO。數據傳輸開始後,後續數據將從陣列 [] 連續傳輸到相應的 SPI FIFO,直到傳輸指定的數據長度為止。

如果您發現這個想法有問題或風險,請分享您的寶貴經驗!

Vison_Zhang_1-1698078509292.png

 

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,伊魯 _1705901,

感謝你在英語凌技社區的提問!對此,我有一些小小的建:

由于本界面是英文界面,你在本界面的提問都會一被送到國外的工程那行回答,但是在提問内容是中文,所以些問又會再次次国内的工程行回答,而是在提問内容是中文,所以你得答的案。因此,我建議你在中文界面中行提問,方便我的工程分配對于的法行回答。

要切到中文界面,你可以直接接右上角的言,勾「CN-體中文」即可。

谢谢!

0
Translation_Bot
Community Manager
Community Manager
Community Manager

好的我注意一個人

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Vison_Zhang

我建議只使用 1 個 DMA 通道和 3 個 TD。 這應該是一種更好的方法,以確保持最低延遲的 R,G 和 B 數據單詞的順序加載。

上面顯示的 3 個 DMA 通道必須分別向 CPU 要求匯流排。 取得 BUS 並釋放 BUS 有延遲。

只使用一個 DMA 通道,只有一個請求,而且 3 個數據單詞載入應該不中斷運行。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Len_CONSULTRON @Vison_Zhang 通控制 spi 的是可以 4 個 spi 同步,但是 SPI 速度只能达到 15MHZ,再高就不同步了,我用分析抓取分析了一下,中后到的本基本每 16 个有个停止,是 CPU 理不了,SPI 速度提高,外到 DMA 的求也越繁繁繁,CPU 理能力不足,致 DMA 按照先级一个一个来,不同步 @Vison_Zhang 你的方法也是同,有什么的方法能提供高速度,

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/PSOC6-UDB%E5%AE%9E%E7%8E%B0%E5%9B%9B%E4%B8%AA%E6%95%B0%E6%8D%AE%E7%BA%BF%E5%85%AC%E7%94%A8%E4%B8%80%E4%B8%AA%E6%97%B6%E9%92%9F%E7%BA%BF%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE-%E4%B8%8D%E6%98%AFQSPI/m-p/650210

0
Translation_Bot
Community Manager
Community Manager
Community Manager

yiru_1705901_0-1701335036631.png

是波形從中始每 16 个会有个停顿,然后 4 个人就不同步了

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/PSOC6-UDB%E5%AE%9E%E7%8E%B0%E5%9B%9B%E4%B8%AA%E6%95%B0%E6%8D%AE%E7%BA%BF%E5%85%AC%E7%94%A8%E4%B8%80%E4%B8%AA%E6%97%B6%E9%92%9F%E7%BA%BF%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE-%E4%B8%8D%E6%98%AFQSPI/m-p/650276

0