資料介紹
描述
項(xiàng)目描述
項(xiàng)目由兩臺設(shè)備組成,其中一臺是控制設(shè)備(本例中是手機(jī)),另一臺是遠(yuǎn)程可穿戴設(shè)備。遠(yuǎn)程設(shè)備有 LED 指示它何時(shí)超出范圍。控制設(shè)備打開連接,并定期發(fā)送測量RSSI的數(shù)據(jù)包。
入門
項(xiàng)目所需的硬件是 Nordic Semiconductors 藍(lán)牙開發(fā)套件之一。以下所有步驟均在 nRF5340-DK 上完成。
在開始之前,最好遵循設(shè)置軟件環(huán)境的指南。
代碼是在 nRF Connect SDK v1.5.0 上開發(fā)的,帶有修補(bǔ)的 zephyr。該補(bǔ)丁是添加對 LCD 顯示的支持所必需的,可在NordicPlayground github repo中找到。可能較新版本的 SDK 已經(jīng)支持板dts 文件中的 Arduino 標(biāo)頭定義。
首先,我們將通過簡單的步驟讓代碼運(yùn)行,然后我們將深入了解 SDK 細(xì)節(jié)。
編程 nRF5340-DK
- 從 Nordic示例應(yīng)用補(bǔ)丁- 克隆項(xiàng)目,然后按照說明應(yīng)用補(bǔ)丁
- 從 Github 克隆虛擬皮帶項(xiàng)目
- 將項(xiàng)目導(dǎo)入 SEGGER Embedded Studio
- 連接 nRF5340-DK
- 將紅色 LED 連接到引腳 P0.30,將綠色 LED 連接到引腳 P0.31
- 連接 Adafruit 2.8" LCD 顯示屏
- 從“構(gòu)建”菜單中選擇“構(gòu)建并運(yùn)行”。
顯示屏應(yīng)顯示 RSSI 標(biāo)簽和 RSSI 圖形背景。
出于測試目的,LED 可以通過相當(dāng)大的 (>= 10k ohm) 限流電阻器直接連接到端口輸出。
從安卓手機(jī)控制
- 打開MIT App Inventor頁面
- 下載并安裝最新的BluetoothLE 擴(kuò)展。
- 從項(xiàng)目存儲庫導(dǎo)入 virtual-leash/app-inventor/control-application.aia
- 編譯 apk,或從 Play 商店安裝“MIT AI2 Companion”
- 在手機(jī)上下載并運(yùn)行應(yīng)用程序
- 按“掃描設(shè)備”
![pYYBAGNr2MuAOpWXAAEyGpXJ9RI865.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2MuAOpWXAAEyGpXJ9RI865.png)
- 選擇“Otown”設(shè)備——這就是 DK 通過藍(lán)牙做廣告的方式
- 按“附加”
- 綠色 LED 應(yīng)開始每秒閃爍一次
實(shí)施細(xì)節(jié)
在接下來的章節(jié)中,我們嘗試添加盡可能多的信息,以幫助其他人了解一切在幕后是如何運(yùn)作的。了解北歐設(shè)備的開發(fā)、使用 Zephyr OS 和使用藍(lán)牙本身是一段相當(dāng)長的旅程。
為了更容易理解,我們首先展示了工作代碼的描述,然后有一些或多或少成功的步驟引導(dǎo)我們找到了這個(gè)特定的解決方案。整體學(xué)習(xí)部分需要幾個(gè)星期的下班后實(shí)驗(yàn)才能開始。
配置項(xiàng)目、了解設(shè)備樹文件、覆蓋文件、了解藍(lán)牙參數(shù)等方面的學(xué)習(xí)曲線非常陡峭。我們不打算在此處提供有關(guān)這些主題的完整教程。
SDK 附帶的 Nordic 示例大多是開箱即用的。這是一個(gè)令人鼓舞的開始,但后來被 Arduino 寵壞了,我們認(rèn)為復(fù)制粘貼代碼足以將部分示例添加到我們的代碼中。這是第一個(gè)讓我們損失 2-3 周的錯(cuò)誤。僅復(fù)制源代碼是不夠的,還有項(xiàng)目配置文件,并且通常需要在示例代碼之上進(jìn)行大量自定義。
最終代碼是使用常規(guī)連接開發(fā)的,DK 作為“外圍”設(shè)備,電話作為“中央”設(shè)備。回想起來,我們可能會使用 BluetoothLE 的 Broadcaster-Observer 角色,因?yàn)榭焖僭推脚_(應(yīng)用程序發(fā)明者、flutter)對無連接數(shù)據(jù)傳輸?shù)闹С趾懿罨虿恢С帧?/font>
nRF5340-DK 上的藍(lán)牙配置詳細(xì)信息
第一個(gè)也是最困難的部分是找到正確的配置設(shè)置。設(shè)置我們最終啟用藍(lán)牙外圍設(shè)備:
# Incresed stack due to settings API usage
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_BT=y
CONFIG_BT_DEBUG_LOG=y
CONFIG_BT_SMP=y
CONFIG_BT_SIGNING=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DIS=y
CONFIG_BT_ATT_PREPARE_COUNT=5
CONFIG_BT_PRIVACY=y
CONFIG_BT_DEVICE_NAME="Otown"
CONFIG_BT_DEVICE_APPEARANCE=833
配置保存在prj.conf
. 這是迄今為止最神秘的部分,并且在剛開始使用 Zephyr 時(shí)文檔記錄很少。對我們有用的是從示例、文檔和 Zephyr 源代碼中復(fù)制的配置組合。
之后啟用和啟動藍(lán)牙非常簡單,并且在所有示例中看起來基本相同。所有的魔法都發(fā)生在從配置設(shè)置自動生成的代碼中。
int err = bt_enable(NULL);
if (err) {
LOG_ERR("Bluetooth init failed (err %d)\n", err);
return;
}
任何面向連接的藍(lán)牙鏈接的第一部分都是設(shè)置廣告細(xì)節(jié)。為此,Zephyr 中有一些非常復(fù)雜的宏。這是一個(gè)對我們有用的結(jié)構(gòu):
//Unique Universal ID of service
#define OTOWN_UUID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x39342d62, 0x3932, 0x662d, 0x6538, 0x313134343332))
// Advertising details for just one service, and generally discoverable peripheral
static const struct bt_data advertising_data[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
BT_DATA_BYTES(BT_DATA_UUID128_ALL, BT_UUID_128_ENCODE(0x39342d62, 0x3932, 0x662d, 0x6538, 0x313134343332)),
};
// Bluetooth connect and disconnect callbacks
static struct bt_conn_cb conn_callbacks = {
.connected = connected,
.disconnected = disconnected,
};
...
// register connect and disonnect callbacks
bt_conn_cb_register(&conn_callbacks);
// Pass structure to bt_le_adv_start method
err = bt_le_adv_start(BT_LE_ADV_CONN_NAME, advertising_data, ARRAY_SIZE(advertising_data), NULL, 0);
我們使用從許多在線生成器之一生成的 UUID。對于自定義通信通道,它們基本上可以是連接雙方都知道的隨機(jī)值。
在最基本的層面上,藍(lán)牙由服務(wù)組成,這些服務(wù)進(jìn)一步分解為可以讀取或?qū)懭氲奶匦浴?/font>
![pYYBAGNr2M2AXBSoAABffknKyAg684.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2M2AXBSoAABffknKyAg684.png)
每個(gè)對象都有很多配置參數(shù)。在我們的項(xiàng)目中,我們使用了具有 2 個(gè)特征的單個(gè)服務(wù)。一種具有讀/寫方法,另一種是只寫。為簡單起見,訪問特征沒有加密或任何特殊配對要求。
#define REMOTE_RSSI_CHARACTERISTIC_UUID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x63342d31, 0x3836, 0x372d, 0x3166, 0x306331633562))
#define DETACH_CHARACTERISTIC_UUID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x1e086d95, 0x7faa, 0x4993, 0x984e, 0xcf234cec373b))
/* Primary Service Declaration */
BT_GATT_SERVICE_DEFINE(otown_svc, //create a struct with _name
BT_GATT_PRIMARY_SERVICE(OTOWN_UUID), //Main UUID
BT_GATT_CHARACTERISTIC(REMOTE_RSSI_CHARACTERISTIC_UUID,
BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE, // Properties
BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, // permissions read/write no security
read_otown, write_otown, otown_value), // Callback functions and value
BT_GATT_CHARACTERISTIC(DETACH_CHARACTERISTIC_UUID,
BT_GATT_CHRC_WRITE, // Properties
BT_GATT_PERM_WRITE, // permissions write no security
NULL, write_detach, detach_request), //Callback functions and value
BT_GATT_CCC(vnd_ccc_cfg_changed, //Client Configuration Configuration
BT_GATT_PERM_READ | BT_GATT_PERM_WRITE_ENCRYPT),
);
處理這些特征的整個(gè)代碼是自動生成的。
寫入和讀取特性通過回調(diào)函數(shù)發(fā)生。在這些回調(diào)中不要使用太多時(shí)間是非常重要的。在回調(diào)中更新 LCD 顯示會在幾秒鐘后導(dǎo)致連接不穩(wěn)定。日志輸出似乎是可以容忍的。
寫入時(shí),數(shù)據(jù)片段必須存儲在緩沖區(qū)中:
//Callback function of write command
static ssize_t write_otown(struct bt_conn *conn, const struct bt_gatt_attr *attr,
const void *buf, uint16_t len, uint16_t offset,
uint8_t flags) {
uint8_t *value = attr->user_data;
if (offset + len > sizeof(otown_value)) {
return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET);
}
memcpy(value + offset, buf, len);
然后可以解析接收到的字符串并將其傳遞給主應(yīng)用程序。在這種情況下,使用了 Zephyr 消息隊(duì)列。
int value_int = atoi(value);
k_msgq_put(&rssi_queue, &value_int, K_NO_WAIT);
return len;
}
消息隊(duì)列是固定大小的循環(huán)緩沖區(qū),提供應(yīng)用程序線程之間的通信方式。這是一個(gè)簡單的例子:
// Queue for passing received RSSI values to main thread (4 elements)
K_MSGQ_DEFINE(rssi_queue, sizeof(int), 4, 4);
...
// write callback on Bluetooth thread
k_msgq_put(&rssi_queue, &value_int, K_NO_WAIT);
...
// main thread - get value from queue, and display on LCD
int rssi;
if(k_msgq_get(&rssi_queue, &rssi, K_NO_WAIT) == 0) {
LOG_INF("RSSI = %d", rssi);
gui_add_point_to_chart(rssi);
}
只是改變狀態(tài)的更簡單的方法不需要使用隊(duì)列。這是分離特征的寫回調(diào)代碼
#define DETACH_COMMAND "detach"
static ssize_t write_detach(...) {
...
// compare received string against predefined command
if(strncmp(value, DETACH_COMMAND, strlen(DETACH_COMMAND)) == 0) {
...
detached_safely = true;
}
return len;
}
最后斷開回調(diào)負(fù)責(zé)檢查電話是否“安全”斷開連接
static void disconnected(...) {
...
// turn on red leds if remote device did not detach safely before disconnecting
if(!detached_safely) {
gpio_set_red(true);
}
}
使用 GPIO
必須在項(xiàng)目配置文件中啟用第一個(gè) GPIO 庫
CONFIG_GPIO=y
使用 GPIO 通常需要在電路板覆蓋文件中定義端口,但是有一個(gè)可用于原型設(shè)計(jì)的快捷方式
#define RED_LED_PIN 30
// "guess" that port 0 is named GPIO_0 on nRF boards
gpio = device_get_binding("GPIO_0");
if (gpio == NULL) {
printk("error getting GPIO_0 device\n");
return;
}
// configure pin 30 as an output
ret = gpio_pin_configure(gpio, RED_LED_PIN, GPIO_OUTPUT);
...
// set output
gpio_pin_set(gpio, RED_LED_PIN, true);
使用液晶顯示器
lvgl 庫支持 Adafruit 2.8" LCD 顯示器(在適當(dāng)?shù)陌迮渲煤螅?。盡管在我們的項(xiàng)目中不是絕對必要的,但它很有趣,并提供了很好的調(diào)試機(jī)會。
在編寫這個(gè)項(xiàng)目時(shí),有用于屏幕布局的 GUI 設(shè)計(jì)器的概念證明,但是代碼生成器還沒有準(zhǔn)備好,可用的 GUI 組件很少。我們使用的代碼大部分是從 NordicPlayground 上的 Nordic 示例中復(fù)制而來的。
圖形組件的文檔不是很好,經(jīng)常需要查看源代碼。除此之外,有時(shí)設(shè)置組件屬性的順序很重要。在正面的觸摸屏上,顯示與 Nordic 和 Zephyr 示例代碼沒有問題。
我們必須在項(xiàng)目文件中設(shè)置一些配置選項(xiàng)以啟用 LVGL 支持
# LVGL DISPLAY
CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_DISPLAY=y
CONFIG_DISPLAY_LOG_LEVEL_ERR=y
CONFIG_LVGL=y
CONFIG_LVGL_ANTIALIAS=y
CONFIG_LVGL_USE_LABEL=y
CONFIG_LVGL_USE_CONT=y
CONFIG_LVGL_USE_BTN=y
CONFIG_LVGL_USE_CHECKBOX=y
CONFIG_LVGL_USE_IMG=y
CONFIG_LVGL_USE_THEME_MATERIAL=y
CONFIG_LVGL_USE_ANIMATION=y
CONFIG_LVGL_USE_SHADOW=y
CONFIG_LVGL_USE_CHART=y
CONFIG_LVGL_CHART_AXIS_TICK_LABEL_MAX_LEN=256
CONFIG_NEWLIB_LIBC=y
具體顯示必須在CMakeLists.txt中選擇
set(SHIELD adafruit_2_8_tft_touch_v2)
所有組件配置代碼,包括 GUI 組件的一些實(shí)驗(yàn)都可以在gui.c
手機(jī)藍(lán)牙應(yīng)用(MIT App Inventor)
手機(jī)應(yīng)用程序非常簡單,功能僅限于掃描附近的藍(lán)牙設(shè)備,然后在附加到設(shè)備后發(fā)送帶有數(shù)據(jù)的字符串。
![poYBAGNr2M-AFVHJAADHvnrqzzE006.png](https://file.elecfans.com/web2/M00/79/44/poYBAGNr2M-AFVHJAADHvnrqzzE006.png)
定期測量連接設(shè)備的 RSSI 并將其寫入“RSSI”特性。這解決了 nRF SDK 上的問題,即一旦連接到中央設(shè)備,就無法在外圍設(shè)備上讀取 RSSI。
![pYYBAGNr2NKAbJCbAABqrmE7Wbw675.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2NKAbJCbAABqrmE7Wbw675.png)
按下分離按鈕將向“分離”特性發(fā)送“分離”命令。
![poYBAGNr2NOAefqXAABBWJqYvYs075.png](https://file.elecfans.com/web2/M00/79/44/poYBAGNr2NOAefqXAABBWJqYvYs075.png)
一點(diǎn)歷史:項(xiàng)目的考慮因素
對于手機(jī)應(yīng)用程序,我們最初計(jì)劃使用 Flutter,因?yàn)樗哂性目缙脚_支持,但是,缺乏適當(dāng)?shù)?ble 庫導(dǎo)致我們在更簡單的東西上進(jìn)行原型設(shè)計(jì)。起初,我們想使用 App Inventor 快速制作原型用于測試目的,雖然它一開始看起來很幼稚且不通用,但諷刺的是,它支持的 BLE 功能比任何可用的 Flutter BLE 庫都多(例如從一個(gè)已經(jīng)連接的設(shè)備),所以我們決定使用它。
另一個(gè)挫折是嘗試從連接的設(shè)備獲取 nRF SDK 中的 RSSI。RSSI 在掃描階段很容易獲得,但是在建立連接后無法獲取。在對網(wǎng)絡(luò)處理器代碼和 HCI 接口進(jìn)行修改時(shí),我們陷入了死胡同。我們嘗試使用 hci_pwr_ctrl 示例,其中藍(lán)牙控制器(在 DK 情況下為網(wǎng)絡(luò)核心)將 RSSI 值隧道傳輸?shù)降诙€(gè)核心上的應(yīng)用程序線程。不幸的是,我們沒有讓這個(gè)示例工作,因?yàn)?nRF 的 Zephyr SDK 中顯然存在一個(gè)已知錯(cuò)誤。對于初學(xué)者來說也太高級了。
最初,我們想使用 nRF5340-DK 作為中央設(shè)備,以及簡單的鑰匙查找器藍(lán)牙信標(biāo)
![pYYBAGNr2NWAXZb3AAAfEdtEsB0686.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2NWAXZb3AAAfEdtEsB0686.png)
我們找不到一個(gè)好的參數(shù)組合來保持與信標(biāo)的連接。我們嘗試了多個(gè)安全/配對參數(shù),但在短暫的協(xié)商階段后連接幾乎立即斷開。錯(cuò)誤代碼不是很有幫助,因此路徑被刪除了。
BluetoothLE 無連接廣播者-觀察者角色非常有前途。我們基于 Zephyr 示例在 nRF5340-DK 和 nRF52840 加密狗之間進(jìn)行了簡單的廣告設(shè)置,但是我們無法輕松傳輸任何有意義的數(shù)據(jù)。所有修改都導(dǎo)致代碼失敗。可能擁有 2 個(gè)完整的開發(fā)套件會更容易。手機(jī)應(yīng)用程序原型設(shè)計(jì)框架中缺乏對這些角色的支持也導(dǎo)致了這條路的放棄。
一旦我們找到一些時(shí)間對其進(jìn)行重新測試和清理,其中一些實(shí)驗(yàn)的代碼將在 GitHub 存儲庫中提供。
提示與技巧
在學(xué)習(xí) Zephyr 時(shí),我們?yōu)?MAX6675 熱電偶 ADC 開發(fā)了一個(gè)簡單的 SPI 驅(qū)動程序。它作為 Zephyr 2.4.99 的補(bǔ)丁提供(隨 nRF SDK 1.5.0 提供)。
從 Play 商店獲取nRF Connect應(yīng)用程序非常有幫助。它非常適合獲取有關(guān)外圍設(shè)備的詳細(xì)信息。非常穩(wěn)定且功能豐富的藍(lán)牙連接調(diào)試。然而,我們無法確定是否可以將其用作 Brodcaster 或 Observer。
![pYYBAGNr2NeAH7GHAAAgHOopejw596.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2NeAH7GHAAAgHOopejw596.png)
在帶有外部 TTL 到 USB 轉(zhuǎn)換器的 nRF52840 加密狗上獲得調(diào)試接口取得了一些成功。
![poYBAGNr2NqAGu9_AAHCrrPF-kQ121.png](https://file.elecfans.com/web2/M00/79/44/poYBAGNr2NqAGu9_AAHCrrPF-kQ121.png)
默認(rèn)情況下調(diào)試輸出被禁用。要將其重定向到串行端口(默認(rèn)情況下,引腳 0.20 上的 TX,引腳 0.24 上的 RX)在項(xiàng)目配置中啟用 SERIAL 和 UART_CONSOLE。
配置用于調(diào)試的 USB 接口最初看起來很簡單,但最終它只適用于 Zephyr USB 日志記錄示例。當(dāng)配置和代碼被復(fù)制粘貼到我們的應(yīng)用程序時(shí),它在第一個(gè)日志記錄宏上失敗了。
這是一些我不記得它來自哪里的隨機(jī)注釋,但是在從 Zephyr 為 nRF52840 加密狗構(gòu)建藍(lán)牙示例時(shí)它非常重要:
啟用 FLASH 設(shè)置。要控制藍(lán)牙設(shè)備名稱,請啟用設(shè)置和 NVS。然后可以更改設(shè)備名稱。
在 AppInventor 方面:確保您沒有使用 2019 年以來過時(shí)的 BLE 插件,較新的 android 設(shè)備無法在其上運(yùn)行,因?yàn)?a target='_blank' class='arckwlink_none'>操作系統(tǒng)受到更多限制,但它已通過 2020 年 12 月插件修復(fù)。
有時(shí)應(yīng)用程序會弄亂手機(jī)上的藍(lán)牙子系統(tǒng),顯示一堆錯(cuò)誤。關(guān)閉應(yīng)用程序和禁用->啟用周期有助于讓事情重回正軌。
原型圖片
![poYBAGNr2OaABuyRAAVnOUmYwDA242.png](https://file.elecfans.com/web2/M00/79/44/poYBAGNr2OaABuyRAAVnOUmYwDA242.png)
![poYBAGNr2OqAMl-eAAOycYouMgU455.png](https://file.elecfans.com/web2/M00/79/44/poYBAGNr2OqAMl-eAAOycYouMgU455.png)
![pYYBAGNr2PSABCGlAAM-06xtFLc687.png](https://file.elecfans.com/web2/M00/79/D4/pYYBAGNr2PSABCGlAAM-06xtFLc687.png)
?
- CS5340 ADC立體聲模數(shù)轉(zhuǎn)換器
- 使用nRF5340 DK進(jìn)行DSP處理的震顫健康分析
- nRF5340模塊開源分享
- 基于nRF5340開發(fā)套件的開源可穿戴式下臂支架
- nrf5340 LCD和flash 共用Qspi 息屏導(dǎo)致flash讀寫問題
- 教你快速維修皮帶滾筒軸磨損 0次下載
- 基于NRF24LU1P-F32Q32-DK射頻收發(fā)器的
- 基于NRF8001-DK無線系統(tǒng)的
- AD5340評估軟件
- 2.4GHz收發(fā)器芯片NRF24L01+數(shù)據(jù)手冊 0次下載
- 圖片:AS73210-AS89010-AB4 SET DK_IM000289_1-00.jpg
- AD5340 Evaluation Software
- 基于nRF51-DK無線連結(jié)的參考設(shè)計(jì)
- 基于nRF52-DK無線連結(jié)的參考設(shè)計(jì)
- nRF51 DK板載的開發(fā)指導(dǎo)手冊免費(fèi)下載 0次下載
- 變頻器在洗煤廠皮帶機(jī)上的應(yīng)用 858次閱讀
- Azure Percept DK的硬件介紹與設(shè)置使用 1149次閱讀
- Azure Kinect Senser DK套件簡介 3845次閱讀
- 皮帶輸送機(jī)運(yùn)輸系統(tǒng)的工作原理及其故障維修 1.7w次閱讀
- DK912芯片功能及基本參數(shù)_DK912芯片應(yīng)用電路 9.4w次閱讀
- nRF5系列首個(gè)高端多協(xié)議SOC nRF5340TM,滿足尖端可穿戴設(shè)備的需求 8320次閱讀
- 微雪電子藍(lán)牙5.0 藍(lán)牙Mesh NRF52840簡介 5126次閱讀
- 微雪電子NRF24L01 RF Board 2.4G無線模塊簡介 3075次閱讀
- 皮帶秤測速傳感器的常見故障 7127次閱讀
- 講述Nordic nRF5 SDK的主要調(diào)試手段,以幫助大家快速定位問題 1.2w次閱讀
- 淺談皮帶機(jī)減速機(jī)漏油的7種情況 2208次閱讀
- nrf24l01無線模塊傳輸距離分析 3.5w次閱讀
- nrf24l01收發(fā)程序詳解 3w次閱讀
- nRF905工作原理_nRF905基本特點(diǎn) 1.1w次閱讀
- nrf905引腳圖及引腳說明_nrf905主要參數(shù) 1.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論