在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種使用來自Adafruit Industries的微型開發板的較容易方法

工程師兵營 ? 來源:互聯網 ? 作者:佚名 ? 2018-06-28 10:06 ? 次閱讀

很多嵌入式應用使用了高級 MCU,但它們只需基本的硬件控制功能,而無高級嵌入式設計的“硬實時”需求。開發人員和創客經常很容易陷到硬件設計、C/C++ 編程和實時操作系統的細節中。幸運的是,他們可以使用更簡單的方法。

本文將介紹一種使用來自 Adafruit Industries 的微型開發板的較容易方法。該開發板結合了 Python 編程語言的嵌入式設計變體與基于 ARM Cortex-M0+ 處理器的高級 32 位 MCU。

高級 MCU 簡化了設計

高級 MCU 通過將全套模擬和數字外設與功能強大的處理器內核集成在一起,從而幫助簡化硬件設計。例如,Microchip Technology 的 ATSAMD21G18 MCU 將 ARM Cortex-M0+ 內核、256 KB 閃存、32 KB SRAM、高級控制子系統和大量外設全部集成在 10 x 10 mm 見方的扁平 (TQFP) 封裝(圖 1)中。

Microchip Technology 的 SAM D21 MCU 系列圖片

圖 1:Microchip Technology 的 SAM D21 MCU 系列成員都基于超低功耗 ARM? Cortex?-M0+ 內核,提供全套功能塊和外設,差別僅在于具體的存儲器大小和外設通道數量。(圖片來源:Microchip Technology)

除了 32 個 GPIO 之外,ATSAMD21G18 MCU 的外設集還包括多個高級串行通信 (SERCOM) 通道、波形輸出通道、多通道 12 位模數轉換器 (ADC)、模擬比較器、10 位數模轉換器 (DAC)。

設計挑戰

有了此類高級 MCU,開發人員無需花費時間查找和連接外部外設,但它們仍然對在系統設計中部署 MCU 的方式提出了嚴格要求。例如,在集成多種類型的電路時,ATSAMD21G18 MCU 的設計要通過相應的一組單獨域來提供電源。因此,開發人員必須處理處理器內核 VDDCORE、內部穩壓器 (VDDIN)、外設 (VDDIO) 和模擬模塊 (VDDANA) 的多個電源和接地引腳(圖 2)。

在設計過程中,開發人員必須遵守具體的建議,包括提供電源、接地以及選擇和放置去耦電容器——這些對于經驗豐富的開發人員極為平常,但對于新接觸嵌入式 MCU 硬件設計的開發人員而言,卻是潛在的陷阱。

Microchip Technology 的 ATSAMD21G18 MCU 圖片

圖 2:Microchip Technology 的 ATSAMD21G18 MCU 使用多個功率域為不同的模擬和數字塊供電,在為這些域供電時需要多加注意。(圖片來源:Microchip Technology)

同樣,這些器件的軟件開發工作也是非常艱巨的。通常,新入門的嵌入式系統開發人員會發現他們埋頭于從嵌入式開發資料了解 C/C++ 開發的相關細節,而這些資料更多地針對具有硬實時需求的應用。這些應用通常具有針對中斷延遲和確定性響應的關鍵性時序要求。但是,很多面向物聯網 (IoT) 的新興傳感器設計對數據采集或致動器工作的要求卻要寬松得多,或者說這些要求很容易滿足。

簡化嵌入式開發

Adafruit 推出了一系列開發板,旨在幫助嵌入式開發人員消除這些硬件和軟件設計障礙,為許多應用需求提供了特別有效的解決方案。Adafruit 的 Metro M0 Express 和 Feather M0 Express 都基于 ATSAMD21G18 MCU,提供的是完整的嵌入式系統,包括串行接口USB、SPI、I2CUART)、脈沖寬度調制 (PWM)、中斷輸入,以及多個模擬 IO 和 GPIO。這些開發板的差異僅在于尺寸和 GPIO 數量:2.8" x 2.1" x 0.28" 的 Metro M0 Express 提供 25 個 GPIO,而尺寸稍小 (2.0" x 0.9" x 0.28") 的 Feather M0 Express 則提供 20 個 GPIO。

SAM D21 MCU 系列使用了最高級的 MCU,提供的外設通道數遠多于物理引腳,但提供的引腳映射功能可將外設功能分配給特定硬件引腳。因此,雖然尺寸小巧,但每個開發板都可使用共享引腳來提供 MCU 廣泛外設的全部功能(圖 3)。

Adafruit 的 Feather M0 Express 開發板圖片

圖 3:Adafruit 利用引腳復用在微型 Feather M0 Express 開發板中提供大量 ATSAMD21G18 外設功能子集。(圖片來源:Adafruit)

但是,對于開發人員而言,這些細節是透明的。Adafruit 在其開源軟件包的特定模塊中為每個開發板提供了特定配置(列表 1)。

STATIC const mp_rom_map_elem_t board_global_dict_table[] = {

{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },

{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) },

{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB09) },

{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },

{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },

{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB02) },

{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },

{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB10) },

{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA12) },

{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) },

{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },

{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },

{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },

{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },

{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },

{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA15) },

{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },

{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },

{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },

{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },

{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },

{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },

{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) },

};

MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

列表 1:Adafruit 開源 CircuitPython 庫摘錄了硬件詳細信息,其中包括使用開發板特定的引腳映射,例如此處顯示的 Feather M0 Express 開發板映射。(代碼來源:Adafruit)

開始開發時,用戶可將開發板插入 USB 端口,并且將內置 USB 引導程序與 Arduino IDE 一起使用。為了進一步簡化引入嵌入式軟件設計,開發人員可以使用內置功能,輕松將 CircuitPython 加載到其電路板上,然后即可開始構建嵌入式應用。

利用 CircuitPython 簡化開發

CircuitPython 旨在幫助加快嵌入式開發的學習速度,它的功能實際上源自 MicroPython,后者是與 Python 關系更直接的派生語言。憑借簡單清晰的語法和大量的支持模塊,Python 成為一種流行語言。但是,其代碼占用空間過大,對嵌入式系統不實用。

MicroPython 砍掉了 Python 的一些比較繁瑣的功能,簡化的版本能夠滿足嵌入式系統的邏輯約束,同時又保留了語言的核心功能。在開發 CircuitPython 的過程中,Adafruit 更進一步,刪除了被視為對嵌入式系統新手程序員不太必要的模塊。

Adafruit 宣稱 CircuitPython 的目標是提供一種非常適合培訓的語言,讓開發人員能夠熟練掌握嵌入式設計,而無需糾纏于低級別開發細節。CircuitPython 從前代產品 Python 繼承的最令人期待的特性之一是解釋型特性,讓開發人員能夠通過交互方式探索外部模塊的接口。例如,CircuitPython 的基本模塊就是開發板模塊——一個提供對相關開發板 I/O 引腳訪問的開發板特定模塊。開發人員能夠從控制臺啟動 CircuitPython,導入該開發板模塊并即時查看支持的引腳名稱(列表 2)。

>>> import board

>>> dir(board)

['A0', 'SPEAKER', 'A1', 'A2', 'A3', 'A4', 'SCL', 'A5', 'SDA', 'A6', 'RX',

'A7', 'TX', 'LIGHT', 'A8', 'TEMPERATURE', 'A9', 'BUTTON_A', 'D4', 'BUTTON_B',

'D5', 'SLIDE_SWITCH', 'D7', 'NEOPIXEL', 'D8', 'D13', 'REMOTEIN', 'IR_RX',

'REMOTEOUT', 'IR_TX', 'IR_PROXIMITY', 'MICROPHONE_SCK', 'MICROPHONE_DO',

'ACCELEROMETER_INTERRUPT', 'ACCELEROMETER_SDA', 'ACCELEROMETER_SCL',

'SPEAKER_ENABLE', 'SCK', 'MOSI', 'MISO', 'FLASH_CS']

列表 2:在解析器控制臺提示符處 (>>),程序員可以導入開發板模塊,并輸入 dir(board),以查看該開發板特定模塊中提供的引腳名稱。(代碼來源:Adafruit)

開發板模塊提供與底層硬件的連接,同時提供一種簡單方式來訪問 Metro M0 Express 和 Feather M0 Express 開發板的引腳。例如,A0 模擬引腳被簡單引用為 "board.A0"。另一方面,各個模塊中駐留有特定硬件功能,例如:analogio 模塊代表模擬;digitalio 模塊代表數字;busio 模塊代表 I2C、SPI 和 UART;pulseio 模塊代表 PWM 和其他基于脈沖的協議等。因此,要在 CircuitPython 中讀取 A0 模擬輸入,只需導入相關模塊,并讀取相關器件實例的值(列表 3)。

import board

import analogio

def adc_to_voltage(val):

return val / 65535 * 3.3

adc = analogio.AnalogIn(board.A0)

pinA0voltage = adc_to_voltage(adc.value)

列表 3:與 Python 相同,CircuitPython 提供了很多高級別模塊,開發人員可將它們導入自己的代碼中;與 Python 不同,CircuitPython 還提供了一些模塊,讓程序員能夠執行硬件級別的操作,例如讀取值 (adc.value) (在 ADC 輸入引腳 (board.A0) 處)。(代碼來源:Adafruit)

開發人員可通過對模擬或數字 IO 引腳的直接訪問,輕松地擴展硬件功能。例如,他們可以通過試驗板將 LED 連接到開發板的 A0 連接(圖 4),并且使用模擬模塊讓 LED 閃爍(列表 4),以詳細研究模擬輸出特性。

圖 4:開發人員可以通過將試驗板電路,例如具有限流電阻器的 LED,連接到 Metro M0 Express 板的 A0 模擬輸出,即可調出 MCU 的 DAC,從而快速構建外部硬件原型。(圖片來源:Adafruit)

import board

import analogio

led = analogio.AnalogOut(board.A0)

while True:

led.value = 65535 # max brightness

time.sleep(0.5) # stay on for 1/2 sec

led.value = 0 # off

time.sleep(0.5) # stay off for 1/2 sec

列表 4:對于圖 4 所示的試驗板電路,開發人員使用 CircuitPython analogio 模塊,創建綁定到該板 A0 引腳的 Analogout 類實例 (led),并修改其值屬性,以便控制 LED 亮度。(代碼來源:Adafruit)

大多數現代“智能”傳感器和致動器都提供 I2C 或 SPI 接口,用于讀取、寫入和監視外圍設備。雖然開發人員可將器件輕松連接到開發板的 SPI 或 I2C 接口,但軟件接口可能需要額外的工作。

為了最大程度減少這類工作,Adafruit 為一些流行的器件(例如 Silicon Labs 的 SI7021 溫度/濕度傳感器)提供了 CircuitPython 模塊。與模擬 I/O 模塊相同,在定義了所需的 I2C 接口對象之后,SI7021 CircuitPython 模塊允許程序員只需使用相應類對象的實例即可訪問傳感器(列表 5)。

import adafruit_si7021

from busio import I2C

from board import SCL, SDA

# create the I2C interface object

i2c = I2C(SCL, SDA)

# and use it to instantiate the sensor object

sensor = adafruit_si7021.SI7021(i2c)

# and perform the sensor measurements

current_temperature = sensor.temperature

current_relative_humidity = sensor.relative_humidity

列表 5:Adafruit 開源軟件庫提供了簡化附加硬件功能訪問的 CircuitPython 模塊,例如使用 Silicon Labs 的 SI7021 傳感器的溫度和濕度測量。(代碼來源:Adafruit)

Adafruit 板和 CircuitPython 開源庫的組合雖然主要是作為一個學習平臺,但也可用于創建相當先進的物聯網設備和其他嵌入式設計。同時,開發人員需要認識到,諸如 MicroPython/CircuitPython 之類解釋型語言,在滿足硬實時需求的能力方面有很大的局限性。但是,對于許多嵌入式應用而言,這個學習平臺可為擴展奠定堅實的基礎。

為了增加硬件功能,開發者可在 Feather M0 Express 板上疊接可用的 Adafruit FeatherWing 子卡,甚至可以使用 FeatherWing Proto 原型板添加他們自己的電路。為了增加對 CircuitPython 中的額外硬件功能的支持,開發人員必須創建定制軟件來添加所需的底層驅動程序。然而,通過將開放源碼庫與 Python 本身特性組合在一起,即使是這項工作也得到了最大程度的簡化。

通過檢查開源庫,程序員可以研究用于實現硬件支持的關鍵設計模式。例如,Adafruit 的 SI7021 模塊展示了相應的“Pythonic”類結構,包括構造函數和輔助函數(列表 6)。通過遵循這種方法,開發人員能夠以最小的工作量來添加自己的硬件。

from micropython import const

import ustruct

import sys

from adafruit_bus_device.i2c_device import I2CDevice

HUMIDITY = const(0xf5)

TEMPERATURE = const(0xf3)

_RESET = const(0xfe)

_READ_USER1 = const(0xe7)

_USER1_VAL = const(0x3a)

def _crc(data):

crc = 0

for byte in data:

crc ^= byte

for i in range(8):

if crc & 0x80:

crc <<= 1

crc ^= 0x131

else:

crc <<= 1

return crc

class SI7021:

"""

A driver for the SI7021 temperature and humidity sensor.

"""

def __init__(self, i2c, address=0x40):

self.i2c_device = I2CDevice(i2c, address)

self.init()

self._measurement = 0

def init(self):

self.reset()

# Make sure the USER1 settings are correct.

while True:

# While restarting, the sensor doesn't respond to reads or writes.

try:

data = bytearray([_READ_USER1])

with self.i2c_device as i2c:

i2c.write(data, stop=False)

i2c.read_into(data)

value = data[0]

except OSError as e:

if e.args[0] not in ('I2C bus error', 19): # errno 19 ENODEV

raise

else:

break

if value != _USER1_VAL:

raise RuntimeError("bad USER1 register (%x!=%x)" % (

value, _USER1_VAL))

def _command(self, command):

with self.i2c_device as i2c:

i2c.write(ustruct.pack('B', command))

def _data(self):

data = bytearray(3)

data[0] = 0xff

while True:

# While busy, the sensor doesn't respond to reads.

try:

with self.i2c_device as i2c:

i2c.read_into(data)

except OSError as e:

if e.args[0] not in ('I2C bus error', 19): # errno 19 ENODEV

raise

else:

if data[0] != 0xff: # Check if read succeeded.

break

value, checksum = ustruct.unpack('>HB', data)

if checksum != _crc(data[:2]):

raise ValueError("CRC mismatch")

return value

def reset(self):

self._command(_RESET)

@property

def relative_humidity(self):

"""The measured relative humidity in percents."""

self.start_measurement(HUMIDITY)

value = self._data()

self._measurement = 0

return value * 125 / 65536 - 6

@property

def temperature(self):

"""The measured temperature in degrees Celcius."""

self.start_measurement(TEMPERATURE)

value = self._data()

self._measurement = 0

return value * 175.72 / 65536 - 46.85

def start_measurement(self, what):

"""

Starts a measurement.

Starts a measurement of either ``HUMIDITY`` or ``TEMPERATURE``

depending on the ``what`` argument.Returns immediately, and the

result of the measurement can be retrieved with the

``temperature`` and ``relative_humidity`` properties.This way it

will take much less time.

This can be useful if you want to start the measurement, but don't

want the call to block until the measurement is ready -- for instance,

when you are doing other things at the same time.

"""

if what not in (HUMIDITY, TEMPERATURE):

raise ValueError()

if not self._measurement:

self._command(what)

elif self._measurement != what:

raise RuntimeError("other measurement in progress")

self._measurement = what

列表 6:為了將自定義硬件添加到其 CircuitPython 應用中,開發人員可以使用像用于 SiLabs si7021 的 Adafruit CircuitPython 驅動程序這樣的開源軟件。該驅動程序展示了使用隱式 (__init__) 和顯式 (init) 構造函數來設計傳感器硬件類 (SI7021),以及通過串行總線(本例中為 I2C 總線)來訪問硬件本身的關鍵設計模式。(代碼來源:Adafruit)

其他模塊,特別是資源庫的硬件抽象層 (HAL) 中的模塊,提供了用于實現物理硬件訪問的較低級別 C 語言服務和 hook。完成自定義模塊后,開發人員可以利用分步說明,將自定義的 C 和 Python 代碼添加到環境中,這些分步說明描述了 Python、MicroPython 和 CircuitPython 內置的特定 hook 的使用。在桌面或服務器 Python 環境中,增強過程在這一點即已結束,但在嵌入式環境中,則還需要額外的步驟,使用增強代碼映像來更新開發板的固件。

Adafruit 為該開發板提供了內置的引導程序,可自動加載 USB Flashing Format (UF2) 映像。開發人員通過按下該開發板的 RESET 按鈕兩次來觸發引導程序進程,這會導致在用戶的主機文件系統中出現一個新的“boot”可移動驅動器。開發人員只需將 UF2 映像從主機系統拖放到代表開發板的可移動驅動器即可(圖 5)。這與最初用于加載 CircuitPython 的過程相同。在這種情況下,開發人員只需拖放使用自定義代碼構建的 UF2 映像。引導程序會自動執行,將新映像刷入該開發板。

Adafruit 通過為開發板提供引導程序簡化了映像刷寫圖片

圖 5:Adafruit 通過為開發板提供引導程序簡化了映像刷寫,當通過按下開發板的 RESET 按鈕啟動時,導致 BOOT 可移動驅動器顯示在文件系統中(本例中為 MAC OS),開發人員只需將新的 UF2 映像拖放至該驅動器上。(圖片來源:Adafruit)

總結

對于希望獲得嵌入式設計經驗的開發人員來說,針對“硬”實時需求提供的工具和技術顯得有些小題大做。同時,開發人員又希望可以隨時使用能夠提供廣泛模擬和數字 IO 功能的高級 32 位 MCU。

Adafruit 的開源 CircuitPython 包則提供了一個更簡單的開發環境,能夠滿足這些較簡單的需求。通過將 CircuitPython 與 Adafruit 的 Metro M0 Express 或 Feather M0 Express 開發板結合在一起,新手開發人員可以快速獲得嵌入式系統經驗,而更有經驗的開發人員則可以快速構建嵌入式應用原型。

CircuitPython 與 Adafruit 開發板一起為嵌入式應用開發提供了一個易于使用卻功能強大的平臺。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9193

    瀏覽量

    370185
  • 嵌入式
    +關注

    關注

    5097

    文章

    19228

    瀏覽量

    308824
  • microchip
    +關注

    關注

    52

    文章

    1524

    瀏覽量

    117832
收藏 人收藏

    評論

    相關推薦

    Linux系統更換開機logo方法教程,觸覺智能RK3562開發板演示

    本文介紹Linux系統更換開機logo方法教程,通用RK3566、RK3568、RK3588、RK3576等開發板,觸覺智能RK3562開發板演示
    的頭像 發表于 01-06 10:53 ?293次閱讀
    Linux系統更換開機logo<b class='flag-5'>方法</b>教程,觸覺智能RK3562<b class='flag-5'>開發板</b>演示

    瑞芯微開發板/主板Android系統APK簽名文件使用方法,實用干貨

    瑞芯微主板/開發板Android系統,APK系統簽名文件使用方法
    的頭像 發表于 12-26 09:43 ?424次閱讀
    瑞芯微<b class='flag-5'>開發板</b>/主板Android系統APK簽名文件使用<b class='flag-5'>方法</b>,實用干貨

    人臉疲勞檢測應用-米爾基于RK3576核心/開發板

    本文將介紹基于米爾電子MYD-LR3576開發板(米爾基于瑞芯微RK3576開發板)的人臉疲勞檢測方案測試。米爾基于RK3576核心/開發板【前言】人臉疲勞檢測:
    的頭像 發表于 12-20 08:06 ?452次閱讀
    人臉疲勞檢測應用-米爾基于RK3576核心<b class='flag-5'>板</b>/<b class='flag-5'>開發板</b>

    瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
    的頭像 發表于 12-13 11:40 ?407次閱讀
    瑞芯微主板/<b class='flag-5'>開發板</b>Linux系統播放音頻<b class='flag-5'>方法</b>,觸覺智能RK3562<b class='flag-5'>開發板</b>演示

    ARM開發板與FPGA的結合應用

    、引言 ARM開發板一種基于ARM架構的嵌入式開發平臺,具有高性能、低功耗的特點。FPGA是一種可編程的數字電路,可以根據需要配置不同的
    的頭像 發表于 11-05 11:42 ?848次閱讀

    使用Tftpd32工具數據互傳是一種什么體驗?SSD201/202D開發板演示,深圳觸覺智能嵌入式方案商

    本文介紹了Tftpd32工具的使用方法,方便電腦與開發板文件互相傳輸。使用到的是觸覺智能的Purple Pi R1雙網口開發板,搭載了SigmaStar SSD201/SSD202D芯片,是嵌入式新人入門學習的高性價比
    的頭像 發表于 10-17 11:20 ?527次閱讀
    使用Tftpd32工具數據互傳是<b class='flag-5'>一種</b>什么體驗?SSD201/202D<b class='flag-5'>開發板</b>演示,深圳觸覺智能嵌入式方案商

    嵌入式linux開發板怎么操作

    嵌入式Linux開發板一種基于Linux操作系統的嵌入式系統開發平臺。它通常包括個處理器、內存、存儲器、輸入/輸出接口等硬件組件,以及
    的頭像 發表于 09-02 09:09 ?510次閱讀

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智能家居、智能交通、醫療設備等領域。 嵌入式Linux開發板概述 嵌入式Linux
    的頭像 發表于 09-02 09:07 ?513次閱讀

    樹莓派和arm開發板的區別

    ,已經推出了多個版本,包括A、B、A+、B+、2、3、4等。 ARM開發板 ARM開發板一種基于ARM架構的嵌入式開發板
    的頭像 發表于 08-30 15:36 ?1345次閱讀

    linux開發板與樹莓派的區別

    定義和用途 Linux開發板:Linux開發板一種基于Linux操作系統的嵌入式開發板,通常用于工業自動化、物聯網、智能家居等領域。 樹莓派:樹莓派(Raspberry Pi)是
    的頭像 發表于 08-30 15:34 ?1246次閱讀

    米爾基于NXP iMX.93開發板的M33處理器應用開發筆記

    1.概述本文主要介紹M33核的兩工程調試開發,第一種方式是通過板子自帶的固件進行開發,第二方式是使用IAREmbeddedWorkben
    的頭像 發表于 06-29 08:01 ?1630次閱讀
    米爾基于NXP iMX.93<b class='flag-5'>開發板</b>的M33處理器應用<b class='flag-5'>開發</b>筆記

    盤古PGX-Mini 4K開發板可以用來入門FPGA嗎

    盤古PGX-Mini 4K開發板,目前來說是款性價比比較高的開發板,他用來入門FPGA怎么樣?
    發表于 03-16 07:17

    fpga開發板是什么?fpga開發板有哪些?

    FPGA開發板一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPG
    的頭像 發表于 03-14 18:20 ?2397次閱讀

    fpga開發板使用教程

    FPGA開發板的使用教程主要包括以下幾個關鍵步驟。
    的頭像 發表于 03-14 15:50 ?1323次閱讀

    ElfBoard ELF 1開發板-putty保存日志的方法

    ELF 1開發板有串口登錄和網絡登錄兩方式,具體方法參考《01-0 ELF1、ELF1S開發板_快速啟動手冊》“2.2 串口登錄方式”和“2.3 網絡登錄方式”。1.采用上述任
    發表于 02-29 17:04
    主站蜘蛛池模板: 亚洲国产婷婷综合在线精品 | 久久久久综合中文字幕 | 日韩三级在线免费观看 | 道区二区三区四区 | 性生交大片免费一级 | 在线三级播放 | 性生活毛片 | 午夜网站在线播放 | 免费鲁丝片一级观看 | 男人的天堂一区二区视频在线观看 | 免费观看欧美一级高清 | 一区二区三区免费在线 | 明日花绮罗在线观看 | 狠狠躁夜夜躁人人爽天天3 狠狠躁夜夜躁人人爽天天段 | 婷色| 五月激情综合网 | 在线婷婷 | 欧美日韩一区二区三区视频在线观看 | 特黄aaaaa日本大片免费看 | 免费视频亚洲 | 亚洲天堂伦理 | 欧美一区二区高清 | 欧美三页 | 人人天天夜夜 | 成年人黄色免费网站 | 国内一区二区三区精品视频 | 亚洲综合色在线观看 | 亚洲人成网站在线观看妞妞网 | 国产老头和美女在线观看 | 久久久免费精品视频 | 毛片免费高清免费 | 操你啦在线播放 | 国语自产拍在线观看7m | 9久久99久久久精品齐齐综合色圆 | 国产成人精品日本亚洲直接 | 久久国产乱子伦精品免费一 | 性夜影院爽黄a爽免费视频 性瘾高h姚蕊全文免费阅读 | 亚洲国产精品久久婷婷 | 免费色视频在线观看 | 四虎在线最新永久免费播放 | 久久国产精品网 |