SoC的設計和應用

大家好,我是良許

在嵌入式系統(tǒng)開發(fā)領域,SoC(System on Chip,片上系統(tǒng))已經(jīng)成為了現(xiàn)代電子產(chǎn)品的核心。

從我們?nèi)粘J褂玫闹悄苁謾C、智能手表,到工業(yè)控制設備、汽車電子系統(tǒng),SoC無處不在。

作為一名從事嵌入式開發(fā)多年的工程師,我見證了SoC技術(shù)的快速發(fā)展,也在實際項目中深刻體會到了SoC給產(chǎn)品設計帶來的革命性變化。

今天,我想和大家深入聊聊SoC的設計理念和實際應用。

1. SoC的基本概念與架構(gòu)

1.1 什么是SoC

SoC,顧名思義,就是把一個完整的系統(tǒng)集成到一塊芯片上。

傳統(tǒng)的電子系統(tǒng)設計中,我們需要CPU、內(nèi)存、各種外設控制器、電源管理等多個獨立芯片協(xié)同工作。

而SoC則將這些功能模塊全部集成到一顆芯片內(nèi)部,大大減少了PCB板的面積、降低了功耗,同時也提升了系統(tǒng)的可靠性。

舉個簡單的例子,早期的手機主板上可能需要十幾顆甚至幾十顆芯片,包括處理器、基帶芯片、音頻芯片、電源管理芯片等等。

而現(xiàn)在的智能手機,核心功能基本都集成在一兩顆SoC芯片里了,這就是SoC帶來的巨大變革。

1.2 SoC的典型架構(gòu)

一個典型的SoC通常包含以下幾個核心部分:

1.2.1 處理器核心

這是SoC的大腦,負責執(zhí)行程序指令。

現(xiàn)代SoC往往采用多核架構(gòu),比如ARM Cortex-A系列的高性能核心配合Cortex-M系列的低功耗核心,實現(xiàn)性能與功耗的平衡。

以STM32MP1系列為例,它集成了雙核Cortex-A7(主頻650MHz)和單核Cortex-M4(主頻209MHz),A7核心運行Linux系統(tǒng)處理復雜任務,M4核心則負責實時性要求高的控制任務。

1.2.2 存儲子系統(tǒng)

包括片上SRAM、ROM,以及外部存儲器接口(如DDR控制器、Flash控制器)。

片上存儲器速度快但容量有限,主要用于關鍵代碼和數(shù)據(jù)的存儲。

外部存儲器接口則允許連接大容量的DDR內(nèi)存和Flash存儲器。

1.2.3 外設接口

這是SoC與外部世界交互的橋梁,包括GPIO、UART、SPI、I2C、USB、以太網(wǎng)、CAN等各種通信接口,以及ADC、DAC、定時器、PWM等功能模塊。

以我之前做汽車電子項目時使用的NXP i.MX系列SoC為例,它集成了多達8個CAN接口,非常適合車載網(wǎng)絡應用。

1.2.4 互連總線

負責連接SoC內(nèi)部各個模塊,常見的有AHB、APB、AXI等總線協(xié)議。

總線的設計直接影響系統(tǒng)的性能和功耗,高性能模塊通常連接到高速總線上,而低速外設則連接到低速總線以降低功耗。

1.2.5 電源管理單元

現(xiàn)代SoC都集成了復雜的電源管理功能,可以根據(jù)工作負載動態(tài)調(diào)整各個模塊的電壓和時鐘頻率,實現(xiàn)精細的功耗控制。這在電池供電的移動設備中尤為重要。

2. SoC的設計流程與關鍵技術(shù)

2.1 SoC設計的基本流程

SoC的設計是一個復雜的系統(tǒng)工程,通常包括以下幾個階段:

2.1.1 需求分析與規(guī)格定義

這是整個設計的起點,需要明確SoC的應用場景、性能指標、功耗要求、成本目標等。

比如設計一款用于智能音箱的SoC,就需要重點考慮音頻處理能力、低功耗待機、WiFi連接等需求。

2.1.2 架構(gòu)設計

根據(jù)需求選擇合適的處理器核心、確定存儲器配置、規(guī)劃外設接口、設計互連總線等。

這個階段需要在性能、功耗、面積、成本之間做權(quán)衡。

架構(gòu)設計的好壞直接決定了最終產(chǎn)品的競爭力。

2.1.3 RTL設計與驗證

使用硬件描述語言(如Verilog或VHDL)實現(xiàn)各個功能模塊的寄存器傳輸級(RTL)設計,并進行功能仿真驗證。

這個階段需要大量的仿真測試,確保設計的正確性。

2.1.4 物理設計

包括邏輯綜合、布局布線、時序分析等步驟,將RTL設計轉(zhuǎn)換為實際的物理版圖。

這個階段需要考慮工藝參數(shù)、信號完整性、功耗優(yōu)化等諸多因素。

2.1.5 流片與測試

將設計交給晶圓廠制造,然后進行芯片測試和驗證。

這是最燒錢的環(huán)節(jié),一次流片的成本可能高達數(shù)百萬美元,所以前期的驗證工作必須做得非常充分。

2.2 SoC設計的關鍵技術(shù)

2.2.1 低功耗設計

功耗是SoC設計中最重要的考量之一。

常用的低功耗技術(shù)包括:

  • 多電壓域設計:將SoC劃分為多個電壓域,不同的模塊使用不同的供電電壓
  • 動態(tài)電壓頻率調(diào)節(jié)(DVFS):根據(jù)負載動態(tài)調(diào)整工作電壓和頻率
  • 時鐘門控:在模塊空閑時關閉時鐘,減少動態(tài)功耗
  • 電源門控:在模塊不使用時完全切斷供電,消除靜態(tài)功耗

在我做過的一個項目中,通過合理使用STM32的低功耗模式,將待機功耗從幾十毫安降低到了幾微安,大大延長了電池壽命。

2.2.2 片上互連技術(shù)

隨著SoC集成度的提高,片上互連成為性能瓶頸。

現(xiàn)代SoC普遍采用NoC(Network on Chip,片上網(wǎng)絡)技術(shù),將傳統(tǒng)的總線結(jié)構(gòu)替換為網(wǎng)絡結(jié)構(gòu),提供更高的帶寬和更好的可擴展性。

2.2.3 IP復用

為了縮短設計周期、降低風險,SoC設計大量使用經(jīng)過驗證的IP核(Intellectual Property Core)。

比如ARM的處理器核心、Cadence的接口IP、Synopsys的存儲器控制器等。

合理選擇和集成IP核是SoC設計成功的關鍵。

3. SoC在嵌入式系統(tǒng)中的應用

3.1 消費電子領域

智能手機是SoC應用最成功的領域之一。

以高通的驍龍系列、蘋果的A系列、華為的麒麟系列為代表,這些SoC集成了高性能CPU、GPU、DSP、ISP(圖像信號處理器)、基帶等多個功能模塊,支撐起了現(xiàn)代智能手機的強大功能。

在智能家居領域,ESP32是一個非常典型的例子。

這顆由樂鑫科技設計的SoC集成了雙核處理器、WiFi和藍牙模塊,價格卻非常親民,成為了IoT設備的首選方案。

我曾用ESP32做過一個智能門鎖項目,開發(fā)體驗非常好:

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_wifi.h"

#define LOCK_PIN GPIO_NUM_5

void lock_control_task(void *pvParameters) {
    gpio_config_t io_conf = {
        .pin_bit_mask = (1ULL << LOCK_PIN),
        .mode = GPIO_MODE_OUTPUT,
        .pull_up_en = GPIO_PULLUP_DISABLE,
        .pull_down_en = GPIO_PULLDOWN_DISABLE,
        .intr_type = GPIO_INTR_DISABLE
    };
    gpio_config(&io_conf);
    
    while(1) {
        // 接收WiFi控制命令
        // 控制門鎖開關
        gpio_set_level(LOCK_PIN, 1);  // 開鎖
        vTaskDelay(3000 / portTICK_PERIOD_MS);
        gpio_set_level(LOCK_PIN, 0);  // 鎖門
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

void app_main() {
    // 初始化WiFi
    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    esp_wifi_init(&cfg);
    
    // 創(chuàng)建門鎖控制任務
    xTaskCreate(lock_control_task, "lock_control", 2048, NULL, 5, NULL);
}

3.2 汽車電子領域

汽車電子是我工作的主要領域,這里的SoC應用非常廣泛。

從儀表盤、中控娛樂系統(tǒng),到ADAS(高級駕駛輔助系統(tǒng))、自動駕駛域控制器,都離不開高性能SoC的支持。

以NXP的S32系列為例,這是專門為汽車應用設計的SoC家族,集成了ARM Cortex-R和Cortex-M核心,支持CAN FD、以太網(wǎng)等車載網(wǎng)絡協(xié)議,并且通過了嚴格的車規(guī)級認證(如AEC-Q100)。

我在項目中使用S32K系列做過一個電池管理系統(tǒng)(BMS),它的多核架構(gòu)讓我可以把安全關鍵任務和非關鍵任務分離:

// Cortex-M4核心運行的安全關鍵任務
void safety_task(void) {
    while(1) {
        // 讀取電池電壓
        float voltage = HAL_ADC_GetValue(&hadc1);
        
        // 讀取電池溫度
        float temperature = read_temperature_sensor();
        
        // 安全檢查
        if(voltage > MAX_VOLTAGE || temperature > MAX_TEMP) {
            // 觸發(fā)保護機制
            HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET);
            trigger_emergency_shutdown();
        }
        
        HAL_Delay(10);  // 10ms周期
    }
}

// Cortex-M0+核心運行的通信任務
void communication_task(void) {
    while(1) {
        // 通過CAN總線發(fā)送電池狀態(tài)
        CAN_TxHeaderTypeDef tx_header;
        uint8_t tx_data[8];
        
        tx_header.StdId = 0x123;
        tx_header.DLR = 8;
        
        // 打包電池數(shù)據(jù)
        pack_battery_data(tx_data);
        
        // 發(fā)送CAN消息
        HAL_CAN_AddTxMessage(&hcan1, &tx_header, tx_data, NULL);
        
        HAL_Delay(100);  // 100ms周期
    }
}

特斯拉的FSD(Full Self-Driving)芯片更是將SoC推向了極致,集成了兩顆定制的神經(jīng)網(wǎng)絡處理器(NPU),算力高達144TOPS,專門用于處理自動駕駛所需的海量傳感器數(shù)據(jù)。

3.3 工業(yè)控制領域

在工業(yè)控制領域,SoC同樣發(fā)揮著重要作用。

TI的Sitara系列、NXP的i.MX系列都是工業(yè)級SoC的代表。

這些SoC通常集成了實時處理單元(如PRU)、工業(yè)以太網(wǎng)接口(如EtherCAT、PROFINET)、高精度ADC等工業(yè)應用所需的功能。

我曾參與過一個工業(yè)機器人控制器的項目,使用的是TI的AM335x SoC。

它的特色是集成了兩個PRU(Programmable Real-time Unit),這是兩個獨立的32位RISC核心,專門用于實時控制任務,可以實現(xiàn)納秒級的響應時間:

// PRU代碼示例(使用C語言,編譯為PRU指令)
#include <stdint.h>
#include "pru_ctrl.h"

#define GPIO_SETDATAOUT   0x194
#define GPIO_CLEARDATAOUT 0x190
#define STEP_PIN          (1 << 15)

volatile uint32_t *gpio1 = (volatile uint32_t *)0x4804C000;

void main(void) {
    uint32_t step_count = 0;
    uint32_t delay_cycles = 1000;  // 控制步進電機速度
    
    while(1) {
        // 產(chǎn)生步進脈沖
        gpio1[GPIO_SETDATAOUT/4] = STEP_PIN;
        __delay_cycles(delay_cycles);
        gpio1[GPIO_CLEARDATAOUT/4] = STEP_PIN;
        __delay_cycles(delay_cycles);
        
        step_count++;
        
        // 每1000步調(diào)整一次速度
        if(step_count >= 1000) {
            step_count = 0;
            // 從主機讀取新的速度參數(shù)
            delay_cycles = read_shared_memory();
        }
    }
}

PRU的優(yōu)勢在于它完全獨立于主CPU運行,不受操作系統(tǒng)調(diào)度的影響,可以保證確定性的實時響應,這在工業(yè)控制中至關重要。

3.4 物聯(lián)網(wǎng)領域

物聯(lián)網(wǎng)是SoC應用增長最快的領域。

這個領域的SoC通常強調(diào)低功耗、小尺寸、低成本,同時集成無線通信功能。Nordic的nRF系列、ST的STM32WB系列都是典型代表。

STM32WB系列特別有意思,它集成了雙核處理器:Cortex-M4核心運行用戶應用,Cortex-M0+核心專門處理藍牙協(xié)議棧。

這種架構(gòu)讓開發(fā)者可以專注于應用開發(fā),而不用擔心無線協(xié)議的復雜性:

#include "stm32wbxx_hal.h"
#include "ble.h"

// M4核心運行的應用代碼
void sensor_task(void) {
    float temperature, humidity;
    
    while(1) {
        // 讀取傳感器數(shù)據(jù)
        temperature = read_temperature();
        humidity = read_humidity();
        
        // 通過BLE發(fā)送數(shù)據(jù)(實際由M0+核心處理)
        BLE_UpdateCharacteristic(TEMP_CHAR_HANDLE, 
                                 (uint8_t*)&temperature, 
                                 sizeof(temperature));
        BLE_UpdateCharacteristic(HUMIDITY_CHAR_HANDLE, 
                                 (uint8_t*)&humidity, 
                                 sizeof(humidity));
        
        // 進入低功耗模式
        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, 
                              PWR_STOPENTRY_WFI);
        
        HAL_Delay(60000);  // 每分鐘上報一次
    }
}

// BLE事件回調(diào)(由M0+核心觸發(fā))
void BLE_EventCallback(BLE_Event_t event) {
    switch(event) {
        case BLE_CONNECTED:
            // 設備已連接
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
            break;
            
        case BLE_DISCONNECTED:
            // 設備已斷開
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
            break;
            
        case BLE_DATA_RECEIVED:
            // 接收到控制命令
            process_command(BLE_GetReceivedData());
            break;
    }
}

4. SoC選型與開發(fā)建議

4.1 如何選擇合適的SoC

選擇SoC是項目成功的第一步,需要綜合考慮多個因素:

4.1.1 性能需求

首先要明確應用的計算需求。

如果只是簡單的傳感器數(shù)據(jù)采集和控制,Cortex-M系列就足夠了;如果需要運行Linux系統(tǒng)、處理圖像視頻,就需要Cortex-A系列。

不要過度設計,性能過剩會帶來不必要的成本和功耗。

4.1.2 功耗要求

對于電池供電的設備,功耗是首要考慮因素。

要仔細研究SoC的功耗數(shù)據(jù)手冊,包括運行功耗、待機功耗、喚醒時間等。

有些SoC雖然運行功耗低,但待機功耗高,反而不適合間歇工作的應用。

4.1.3 外設接口

確保SoC集成了項目所需的所有外設接口,包括數(shù)量和類型。

比如做電機控制,需要足夠多的PWM通道和高速ADC;做通信網(wǎng)關,需要多個UART和以太網(wǎng)接口。

4.1.4 開發(fā)生態(tài)

完善的開發(fā)生態(tài)可以大大降低開發(fā)難度和周期。

要考察SoC的開發(fā)工具鏈、軟件庫、技術(shù)文檔、社區(qū)支持等。STM32之所以流行,很大程度上是因為它有完善的HAL庫、豐富的例程和活躍的社區(qū)。

4.1.5 供貨和成本

要考慮SoC的長期供貨能力和價格趨勢。

特別是工業(yè)和汽車應用,產(chǎn)品生命周期可能長達十年以上,必須確保芯片供應商能夠提供長期支持。

4.2 SoC開發(fā)的最佳實踐

4.2.1 充分利用硬件加速

現(xiàn)代SoC集成了很多硬件加速模塊,如DMA、硬件CRC、加密引擎等。

充分利用這些硬件資源可以大大提升性能、降低CPU負載。

比如在做數(shù)據(jù)傳輸時,使用DMA而不是CPU輪詢,可以讓CPU騰出時間處理其他任務:

// 使用DMA傳輸數(shù)據(jù)的示例
void setup_dma_transfer(void) {
    // 配置DMA
    hdma_uart_tx.Instance = DMA1_Channel4;
    hdma_uart_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
    hdma_uart_tx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_uart_tx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_uart_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_uart_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_uart_tx.Init.Mode = DMA_NORMAL;
    hdma_uart_tx.Init.Priority = DMA_PRIORITY_LOW;
    HAL_DMA_Init(&hdma_uart_tx);
    
    // 關聯(lián)DMA和UART
    __HAL_LINKDMA(&huart1, hdmatx, hdma_uart_tx);
    
    // 啟動DMA傳輸
    uint8_t data[1024];
    prepare_data(data, sizeof(data));
    HAL_UART_Transmit_DMA(&huart1, data, sizeof(data));
    
    // CPU可以去做其他事情,傳輸完成后會觸發(fā)中斷
}

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
    // DMA傳輸完成回調(diào)
    if(huart == &huart1) {
        // 處理傳輸完成后的邏輯
        transmission_complete_handler();
    }
}

4.2.2 合理的軟件架構(gòu)

對于復雜的應用,建議使用RTOS(實時操作系統(tǒng))來管理多個任務。

FreeRTOS是一個非常好的選擇,它輕量級、可靠,并且被廣泛支持。

使用RTOS可以讓代碼結(jié)構(gòu)更清晰、更容易維護:

#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

QueueHandle_t sensor_queue;

// 傳感器讀取任務
void sensor_task(void *pvParameters) {
    sensor_data_t data;
    
    while(1) {
        data.temperature = read_temperature();
        data.pressure = read_pressure();
        data.timestamp = HAL_GetTick();
        
        // 將數(shù)據(jù)發(fā)送到隊列
        xQueueSend(sensor_queue, &data, portMAX_DELAY);
        
        vTaskDelay(pdMS_TO_TICKS(100));  // 100ms采樣周期
    }
}

// 數(shù)據(jù)處理任務
void process_task(void *pvParameters) {
    sensor_data_t data;
    
    while(1) {
        // 從隊列接收數(shù)據(jù)
        if(xQueueReceive(sensor_queue, &data, portMAX_DELAY) == pdTRUE) {
            // 數(shù)據(jù)處理
            float filtered_temp = apply_filter(data.temperature);
            
            // 異常檢測
            if(filtered_temp > THRESHOLD) {
                trigger_alarm();
            }
            
            // 數(shù)據(jù)存儲
            store_to_flash(&data);
        }
    }
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    
    // 創(chuàng)建隊列
    sensor_queue = xQueueCreate(10, sizeof(sensor_data_t));
    
    // 創(chuàng)建任務
    xTaskCreate(sensor_task, "Sensor", 256, NULL, 2, NULL);
    xTaskCreate(process_task, "Process", 512, NULL, 1, NULL);
    
    // 啟動調(diào)度器
    vTaskStartScheduler();
    
    while(1);
}

4.2.3 電源管理優(yōu)化

在電池供電的應用中,精細的電源管理至關重要。

要充分利用SoC的低功耗模式,在不需要工作時讓系統(tǒng)進入睡眠狀態(tài):

void enter_low_power_mode(void) {
    // 關閉不需要的外設
    HAL_ADC_Stop(&hadc1);
    HAL_TIM_Base_Stop(&htim2);
    
    // 配置喚醒源(比如RTC定時器)
    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 60, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
    
    // 進入停止模式
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
    
    // 喚醒后恢復系統(tǒng)時鐘
    SystemClock_Config();
    
    // 重新啟動外設
    HAL_ADC_Start(&hadc1);
    HAL_TIM_Base_Start(&htim2);
}

4.2.4 調(diào)試與優(yōu)化

SoC開發(fā)中,調(diào)試是一個挑戰(zhàn)。

要善用各種調(diào)試工具,如JTAG調(diào)試器、邏輯分析儀、示波器等。

對于性能優(yōu)化,可以使用SoC內(nèi)置的性能計數(shù)器和追蹤單元(如ARM的ETM)來分析程序的運行情況。

5. SoC的未來發(fā)展趨勢

5.1 異構(gòu)計算

未來的SoC將集成更多種類的處理單元,包括CPU、GPU、DSP、NPU(神經(jīng)網(wǎng)絡處理器)等,形成異構(gòu)計算架構(gòu)。

不同的任務由最適合的處理單元來執(zhí)行,實現(xiàn)性能和能效的最優(yōu)化。

比如蘋果的M系列芯片,就集成了高性能CPU核心、高效能CPU核心、GPU、神經(jīng)網(wǎng)絡引擎、視頻編解碼引擎等多種處理單元。

5.2 AI加速

隨著人工智能的普及,越來越多的SoC開始集成AI加速器。

這些專用硬件可以高效地執(zhí)行神經(jīng)網(wǎng)絡推理任務,讓邊緣設備也能運行復雜的AI算法。

比如Google的Edge TPU、華為的達芬奇架構(gòu)NPU等。

5.3 先進制程

SoC的制程工藝不斷進步,從28nm、14nm到現(xiàn)在的5nm、3nm,甚至未來的2nm。

更先進的制程帶來更高的集成度、更低的功耗和更強的性能。

但同時,設計和制造成本也在急劇上升,這使得只有少數(shù)公司能夠負擔得起最先進制程的SoC開發(fā)。

5.4 chiplet技術(shù)

為了應對先進制程的高成本,chiplet(小芯片)技術(shù)正在興起。

這種技術(shù)將SoC分解為多個小芯片,每個小芯片使用最適合的制程工藝制造,然后通過先進封裝技術(shù)組裝在一起。

這樣可以在控制成本的同時,實現(xiàn)高性能和高集成度。

AMD的Ryzen和EPYC處理器就采用了chiplet架構(gòu)。

5.5 開源硬件

RISC-V等開源指令集架構(gòu)的興起,正在改變SoC設計的格局。

開源硬件降低了SoC設計的門檻,讓更多的公司和個人能夠參與到芯片設計中來。

中國的很多芯片公司已經(jīng)開始基于RISC-V開發(fā)SoC產(chǎn)品,這個趨勢在未來會更加明顯。

結(jié)語

SoC技術(shù)的發(fā)展深刻地改變了電子產(chǎn)品的設計方式。

作為嵌入式工程師,我們既要掌握SoC的使用方法,也要理解其背后的設計原理。

只有這樣,才能在項目中做出正確的技術(shù)選擇,開發(fā)出高性能、低功耗、高可靠性的產(chǎn)品。

從我個人的經(jīng)驗來看,SoC開發(fā)最重要的是要有系統(tǒng)思維。

不能只關注某個模塊或某個功能,而要從整體上考慮系統(tǒng)的性能、功耗、成本等各個方面。

同時,要保持學習的熱情,因為這個領域的技術(shù)更新非??欤挥胁粩鄬W習,才能跟上時代的步伐。

希望這篇文章能夠幫助大家更好地理解SoC的設計和應用。

如果你在實際項目中遇到了問題,歡迎和我交流討論。讓我們一起在嵌入式開發(fā)的道路上不斷前行!

更多編程學習資源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 大家好,我是良許。 說到FPGA,可能很多做嵌入式的朋友都聽說過,但真正深入了解的可能不多。 作為一名嵌入式程序員...
    良許Linux閱讀 84評論 0 0
  • 大家好,我是良許。 在嵌入式開發(fā)的這些年里,我接觸過各種各樣的處理器架構(gòu),從最早做單片機時用的51內(nèi)核,到后來做汽...
    良許Linux閱讀 61評論 0 0
  • 大家好,我是良許。 在嵌入式開發(fā)領域,DSP(Digital Signal Processor,數(shù)字信號處理器)是...
    良許Linux閱讀 61評論 0 0
  • 大家好,我是良許。 今天咱們來聊聊51單片機。 作為嵌入式開發(fā)領域的"老前輩",51單片機陪伴了無數(shù)工程師走過了學...
    良許Linux閱讀 28評論 0 0
  • 達林頓管的基礎知識 大家好,我是良許。 在嵌入式開發(fā)中,我們經(jīng)常需要驅(qū)動各種負載,比如繼電器、電機、LED燈帶等。...
    良許Linux閱讀 46評論 0 0

友情鏈接更多精彩內(nèi)容