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

我正在嘗試遵循模組 Stoolbox API 文檔中的英菲尼昂 SSD1306 OLED 說明。 當我按照其運行演示程序的指示時,它不會構建。 我可以幫助您就如何正確完成這一點。 我對 ModusToolbox 非常新手,與 Creator 相比,我必須說這是非常困難的學習曲線。 無論如何,我肯定會感謝一些幫助,以使用 ModusToolbox 為我的應用程序運行的顯示。

u8g2 應用說明

步驟 2 問題:它說將此庫添加到應用程序中。 這是庫管理器中的 SSD1306 OLED 控制器庫嗎?

步驟 3 問題:它說從 github 向應用程序添加 u8g2 庫。 是否要添加到應用程序中?

我試圖在 libs 目錄下加載它,但當我這樣做時,它會產生超過 70 個錯誤。

我相信我已將我的應用程序附加到下面的壓縮文件中。 我正在 CY8CKIT-145-04XX 上運行此測試

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

你好,斯科特 C,

感謝您的最新代碼/項目共享。 🙂
因此,我可以在 MTB 上使用 U8g2 問題解決這個 PSoC 4 問題。

之前我說,默認情況下 HAL 與 PSoC 4 不兼容。但是在看到您的共享項目後,我意識到我們可以通過使用庫管理器添加 HAL

然後我嘗試在 CY8CKIT-149 上使用我的程式碼,這是一個演示:

nandax_2-1698287389133.pngnandax_3-1698287526996.png

請找到我附加的代碼示例 main.c。
您也可以嘗試在 CY8CKIT-145-04XX 中使用正確的 SDA & SCL 引腳來嘗試這一點。

如果您仍然有問題,請檢查您的佈線和 I2C 引腳配置。
對於 CY8CKIT-145-40XX,I2C 位於 P1_0 和 P1_1。

nandax_4-1698288437621.png

您可以在 " cyhal_i2c_init()中嘗試 " P1_1 P1_0,而不是 " CYBSP_I2C_SDA," CYBSP _I2C_SCL,並在 "備配置器中禁 用(取消選中)。"

對於您的問題:"在哪裡給出 I2C 地址?"
,它正在:

 

        case U8X8_MSG_BYTE_END_TRANSFER:
            rslt = cyhal_i2c_master_write(i2c_ptr, OLED_I2C_ADDRESS, buffer, buf_idx, 0, true);

 

這是在 u8g2_support.c 中" 的 u8x8_ 位元組 _hw_i2c()內部。" 在主函數中,使用 U8G2_設定 _SSD1306_I2C_128x64_無名 _F()/" U8G2_設定 _SSD1306_I2C_128x64_無名 _2()來調
用作回 調。" " "

請在下一次試用後通知我們您的更新。 🙂

謝謝你和問候,
穆罕默德·南達

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

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

您好 @Gone

我剛剛分配給這個主題。
適用於 8 克,

  1. 確保 PSoC 4 BSP 中的硬體連接到 OLED 元件,尤其是 I2C。
  2. 將此庫添加:
    https://github.com/olikraus/u8g2/tree/master/csrc
    在與 您的 main.c 相同的文件夾中,您可以使用 u8g2 重命名該文件夾 " csrc "。" "
    然後包括:
    #include "mtb_ssd1306.h"
    #include "u8g2/u8g2.h"
    #include "u8g2/u8g2_support.h"
  3. 在 Makefile 中,在組"件下添"加 " U8G2 "
    它將如下所示:
    COMPONENTS=U8G2​

    如果您的程序具有其他幾個元件,則可以用空格分隔,例如:

    COMPONENTS=FREERTOS WICED_BLE U8G2
  4. 編譯/構建
  5. 程序到您的芯片中/BSP

您可能會找到附加的樣本 main.c
該樣本已在 PSoC 6 和 CYW20829 BSP 上進行測試
。您也可以通過更改 I2C 的實現來使用 CY8CKIT-145-04XX 嘗試此示例,因為 PSoC 4 BSP 不使用 HAL。 為此,您可以嘗試 PDL I2C。

請告知這是否可以解決您的問題。
我期待收到您的回复。 🙂

謝謝你和問候,
穆罕默德·南達

0
Translation_Bot
Community Manager
Community Manager
Community Manager

您好 @Gone

進一步檢查後,U8g2 庫正在使用 HAL,默認情況下與 PSoC 4 不兼容。
我仍在檢查替代方案。

對於造成的不便,我很抱歉。
我會在找到解決方案後盡快回覆您。

謝謝你和問候,
穆罕默德·南達

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

這是我的代碼附加

0
Translation_Bot
Community Manager
Community Manager
Community Manager

我能夠在沒有錯誤的情況下構建的示例。 我的顯示器不會運行。 我在代碼中看不到的問題是否給出了 I2C 地址。 這是在哪裡? 我的顯示器地址是 0x78...我確實在在 I2c 設備配置器中加載此地址。 但是應該不應該在某個地方代碼中加入嗎?

謝謝

斯科特 C

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

你好,斯科特 C,

感謝您的最新代碼/項目共享。 🙂
因此,我可以在 MTB 上使用 U8g2 問題解決這個 PSoC 4 問題。

之前我說,默認情況下 HAL 與 PSoC 4 不兼容。但是在看到您的共享項目後,我意識到我們可以通過使用庫管理器添加 HAL

然後我嘗試在 CY8CKIT-149 上使用我的程式碼,這是一個演示:

nandax_2-1698287389133.pngnandax_3-1698287526996.png

請找到我附加的代碼示例 main.c。
您也可以嘗試在 CY8CKIT-145-04XX 中使用正確的 SDA & SCL 引腳來嘗試這一點。

如果您仍然有問題,請檢查您的佈線和 I2C 引腳配置。
對於 CY8CKIT-145-40XX,I2C 位於 P1_0 和 P1_1。

nandax_4-1698288437621.png

您可以在 " cyhal_i2c_init()中嘗試 " P1_1 P1_0,而不是 " CYBSP_I2C_SDA," CYBSP _I2C_SCL,並在 "備配置器中禁 用(取消選中)。"

對於您的問題:"在哪裡給出 I2C 地址?"
,它正在:

 

        case U8X8_MSG_BYTE_END_TRANSFER:
            rslt = cyhal_i2c_master_write(i2c_ptr, OLED_I2C_ADDRESS, buffer, buf_idx, 0, true);

 

這是在 u8g2_support.c 中" 的 u8x8_ 位元組 _hw_i2c()內部。" 在主函數中,使用 U8G2_設定 _SSD1306_I2C_128x64_無名 _F()/" U8G2_設定 _SSD1306_I2C_128x64_無名 _2()來調
用作回 調。" " "

請在下一次試用後通知我們您的更新。 🙂

謝謝你和問候,
穆罕默德·南達

0
Translation_Bot
Community Manager
Community Manager
Community Manager

穆罕默德,

感謝您的幫助!... 我仍然不清楚是什麼...已定義了 OLED_I2C 地址...。 我看到 " OLED_I2C_ADDRESS,但我仍然不看"到它是否被定義。 這位置在哪裡?

謝謝

斯科特 C

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,斯科特 C,

它在 MTB_ 共享/顯示-OLED-SSD1306/發行版本 v1.0.2/米特比_SSD1306_i2c.h 中定義

 

#define OLED_I2C_ADDRESS  (0x3C)

 

謝謝你和問候,
穆罕默德·南達

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

謝謝穆罕默德

我在 " OLED_I2C_ADDRESS 中放了正確的地址,"但是當我運行程序並記錄(在我的銷售中)SCL 和 SDA 時,我看到行上沒有數據或時鐘。 我選擇了組件作為 100kHz 運行的主要元件。 還有其他我錯過的東西嗎?

我的項目已附上。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,斯科特 C,

用於

cyhal_i2c_master_write()

你只需要添加沒有 R/W 位的從屬地址。

因此,您只應該使用「0111100」(0x3C)作為從屬地址。
(而不是 0111 100 0/0x78)。

謝謝你和問候,
穆罕默德·南達

0
Translation_Bot
Community Manager
Community Manager
Community Manager

我感到困惑,我的顯示地址為 0X78。 為什麼我不能使用這個地址?

 

斯科特 C

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,斯科特 C,

從我之前的解釋 中 0111 100 0/ 0x 78,最後一個 紅色位是 R/W 位。

正如數據表中所述,https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf 第 " 8.
1.5 節 MCU I2C 介面:"

nandax_0-1698713712590.png

從屬地址應該是 b7-b1,那麼它將是 0x3C/0111 100。 如果您讀取 1 字節/8 位/b7-b0(實際上在顯示器中,默認情況下應該是以字節為單位的使用值),它還將包括 b0(R/W 標記的位元(1 被讀取,0 為寫入))。 如果它處於寫入模式,它將在最後 一 個 字節上添加 0 到 0x3C,因此它將變為 0111 100 0 = 0x78。

如果您仍有任何疑問,請隨時詢問。 🙂

謝謝和問候,穆罕默德·
南達英菲尼昂
科技

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,斯科特 C,

您可以更新此問題的狀態嗎?
🙂

謝謝和問候,穆罕默德·
南達英菲尼昂
科技

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,斯科特 C,

我很抱歉
你對這個問題還有任何疑慮嗎?
如果沒有,我將關閉這個討論線程。 🙂

謝謝你和問候,
穆罕默德·南達

0
Translation_Bot
Community Manager
Community Manager
Community Manager

您好,斯科特 C @Gone,

自我 10 月 30 日或 31 日發帖以來,我沒有收到您的回复(取決於您的時區)。
因此,我將此答案標記為解決方案並鎖定此討論線程。

如果您將來有任何其他問題,請不要猶豫創建新的線程。 🙂

謝謝你和問候,
穆罕默德·南達

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/u8g2-application-does-not-build-in-ModusToolBox/m-p/642637

0