Deepseek到底能不能替换软、硬件工程师?

背景

身边很多同学、朋友每天都被AI焦虑着,本来上个帖子已经说的很清楚了,下了结论,AI无法替代软、硬件工程师。
上篇帖子演示了”使用Deepseek完成一个简单嵌入式开发“,并做了分析,帖子地址如下:
https://blog.youkuaiyun.com/li171049/article/details/146237807
帖子结尾说了
使用Altium Designer工程,最后是生成gerber文件和bom表,使用keil工程,主要是生成hex文件,我下次可以直接试试让DeepSeek直接生成gerber文件和bom表、hex文件,看看DeepSeek如何接招。
本文分析一下看看DeepSeek 能否直接输出软、硬件工程师想要的核心交付文件。

DeepSeek 生成gerber文件

请帮我生成一个gerber文件;要求:使用stm32F103RCT6为主控芯片,控制3个流水灯。
在这里插入图片描述
生成Gerber文件需要完整的PCB设计流程,以下是分步骤指导。若您不熟悉电路设计,建议先完成原理图设计和PCB布局后再生成Gerber文件。


第一步:设计原理图(关键基础)

1. 核心元件清单
  • 主控芯片:STM32F103RCT6(LQFP64封装)
  • LED:3个普通LED(如0805封装)
  • 电阻:3个限流电阻(220Ω-1kΩ,0805封装)
  • 晶振:8MHz主晶振 + 32.768kHz RTC晶振(可选)
  • 电源:3.3V LDO稳压芯片(如AMS1117)
  • 调试接口:SWD接口(10pin 1.27mm间距)
  • 按键:复位按键
2. 关键电路设计
STM32F103RCT6
├── PA0-PA2 → 通过220Ω电阻连接LED阳极(LED阴极接地)
├── VDD → 3.3V电源
├── VDDA → 接10nF电容滤波
├── NRST → 10k上拉电阻 + 100nF电容
├── 8MHz晶振 → OSC_IN/OSC_OUT
└── BOOT0 → 10k下拉电阻

第二步:PCB布局建议

  1. 层堆叠:双面板即可(顶层信号+电源,底层地平面)
  2. 布局顺序
    • 先放置STM32芯片,靠近板子中心
    • 晶振尽量靠近芯片(<15mm),下方避免走线
    • 电源电路靠近板边,注意输入输出电容布局
    • LED和电阻放置在板边便于观察的位置
  3. 关键间距
    • 晶振周围预留1mm禁布区
    • SWD接口靠近板边便于调试
    • 电源走线宽度≥0.3mm(1oz铜厚)

第三步:生成Gerber文件(以KiCad为例)

  1. 完成PCB设计后,进入 文件 → 制造输出 → Gerber文件
  2. 设置参数:
    • 格式:RS-274X
    • 层:选择所有铜层(F.Cu/B.Cu)
    • 包含:边缘切割层(Edge.Cuts)、钻孔文件
  3. 生成文件列表:
    • .gbr:各层Gerber文件
    • .drl:钻孔文件
    • .gml:板框文件

第四步:设计验证

  1. 使用 Gerber查看器(如KiCad GerbView或在线工具)检查:
    • 焊盘是否正确
    • 丝印是否清晰
    • 钻孔对齐情况
  2. 进行 电气规则检查(ERC)设计规则检查(DRC)
  3. 推荐免费验证工具:https://www.pcbway.com/project/OnlineGerberViewer.html

资源提供

由于直接发送文件受限,您可以通过以下途径获取参考设计:

  1. GitHub开源项目(搜索 “STM32F103 LED PCB”)
  2. 立创EDA官方STM32模板库
  3. 参考设计文件(伪代码示例):
// PCB连接伪代码
module stm32_leds(
  output LED1,  // PA0
  output LED2,  // PA1
  output LED3   // PA2
);
// 电源网络
wire VCC3V3 = AMS1113-3.3V(VIN);
// 复位电路
assign NRST = RC(10k, 100nF);
endmodule

注意事项

  1. 量产前务必打样测试
  2. 建议添加电源指示灯和测试点
  3. 若需编程,确保SWD接口(PA13/PA14)已引出
  4. 3个LED电流总和应小于MCU GPIO总驱动能力(STM32单个引脚最大25mA)

建议先用开发板验证代码,再制作PCB。需要进一步帮助可提供具体设计文件截图。

DeepSeek 生成hex文件

请帮我生成一个hex文件;要求:使用stm32F103RCT6为主控芯片,控制3个流水灯。
在这里插入图片描述
以下是基于STM32F103RCT6的流水灯控制代码和生成HEX文件的步骤:

1. 硬件连接

假设3个LED连接方式:

  • LED1 -> PC13(低电平点亮)
  • LED2 -> PC14
  • LED3 -> PC15
    (请根据实际电路修改引脚和电平逻辑)

2. 软件代码(基于HAL库)

#include "stm32f1xx_hal.h"

#define LED1_PIN GPIO_PIN_13
#define LED2_PIN GPIO_PIN_14
#define LED3_PIN GPIO_PIN_15
#define LED_PORT GPIOC

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();

    while (1)
    {
        // LED1亮,其他灭
        HAL_GPIO_WritePin(LED_PORT, LED1_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED_PORT, LED2_PIN|LED3_PIN, GPIO_PIN_SET);
        HAL_Delay(500);
        
        // LED2亮,其他灭
        HAL_GPIO_WritePin(LED_PORT, LED2_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED_PORT, LED1_PIN|LED3_PIN, GPIO_PIN_SET);
        HAL_Delay(500);
        
        // LED3亮,其他灭
        HAL_GPIO_WritePin(LED_PORT, LED3_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED_PORT, LED1_PIN|LED2_PIN, GPIO_PIN_SET);
        HAL_Delay(500);
    }
}

void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
    HAL_RCC_OscConfig(&RCC_OscInitStruct);

    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
}

static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOC_CLK_ENABLE();

    GPIO_InitStruct.Pin = LED1_PIN|LED2_PIN|LED3_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);

    // 初始化所有LED灭
    HAL_GPIO_WritePin(LED_PORT, LED1_PIN|LED2_PIN|LED3_PIN, GPIO_PIN_SET);
}

3. 生成HEX文件步骤(以STM32CubeIDE为例)

  1. 新建STM32项目
  2. 选择芯片型号:STM32F103RCTx
  3. 将上述代码复制到main.c
  4. 配置项目属性:
    • 打开"Project Properties" -> C/C++ Build -> Settings
    • 在"Tool Settings"标签页中:
      • MCU Post build outputs -> 勾选"Convert to Intel Hex file"
  5. 点击"Build"按钮编译项目
  6. 生成的HEX文件位于:Debug或Release目录下(后缀.hex)

4. 程序功能说明

  • 三个LED依次点亮,每个LED点亮0.5秒
  • 流水灯循环模式:LED1 → LED2 → LED3 → LED1…
  • 使用HAL库实现,系统时钟配置为72MHz

5. 烧录说明

  1. 使用ST-Link或J-Link等调试器连接开发板
  2. 使用STM32CubeProgrammer或其他烧录工具
  3. 选择生成的HEX文件进行烧录

注意事项:

  1. 实际LED连接引脚可能需要根据开发板原理图修改
  2. 如果LED是共阳接法,需要将输出电平逻辑反转
  3. 延时时间可通过修改HAL_Delay()参数调整
  4. 需要正确配置系统时钟(本代码已配置为72MHz)

如果需要预编译的HEX文件,请提供具体开发板型号或硬件连接细节,我可协助生成特定版本。

结论

上述两个问题代表目前硬件工程师、软件工程师在一个实际的项目中需要交付的关键文件。
DeepSeek没有给出关键文件,只是提供了一种获取关键文件的思路。如下图所示,DeepSeek还是无法代替人来使用EDA(Altium designer、PADS、Cadence、Eagle)、开发软件Keil/iar/stm32cube/stm32cubeide等,最终交付的关键文件还是需要人来完成。
从gerber文件的生成效果来看,DeepSeek甚至都没有给出来一张参考图纸,而软件方便给出来参考代码。这说明DeepSeek针对图的处理能力还很欠缺,用AI替代硬件工程师比替代软件工程师更难。
AI直接输出结果,还需要替代
Altium designer、PADS、Cadence、Eagle、Keil/iar/stm32cube/stm32cubeide等开发软件,这些专业开发软件是看着复杂,实际上也复杂,想要替代这些软件,估计AI再发展50年都难。
在这里插入图片描述

### DeepSeek嵌入式测试方法和工具 #### 使用DeepSeek进行嵌入式项目的开发与调试 对于希望利用DeepSeek开展嵌入式测试工作的开发者而言,平台提供了集成的学习资源和技术支持。通过结合理论学习与实际操作,用户可以在掌握必要的硬件原理之后迅速过渡到具体的项目实践中去[^1]。 #### 集成开发环境的选择——VSCode接入DeepSeek 为了提高工作效率,在IDE方面推荐采用Visual Studio Code作为主要的工作空间,并安装相应的插件来连接至DeepSeek服务端口。这不仅简化了配置流程,而且使得编写、编译以及运行程序变得更加便捷高效[^2]。 ```json { "deepseek.server": "http://localhost:9000", "deepseek.token": "<your_token_here>" } ``` 上述JSON片段展示了如何设置VSCode中的扩展参数以确保能够顺利调用远程API接口;其中`<your_token_here>`应替换为个人授权令牌字符串。 #### 实际案例分析:基于飞凌OK3588-C开发板的应用场景 具体来说,如果目标是针对某款特定型号如飞凌OK3588-C这样的高性能ARM架构单片机,则可以从官方文档出发逐步搭建起适合自己的实验环境。在此过程中,借助于DeepSeek的强大功能模块,比如实时日志查看器或是性能监控面板等功能特性,可以帮助工程师们更好地理解系统行为模式并优化代码逻辑结构[^3]。 #### 自动化测试框架构建 除了手动执行各项检测外,还可以考虑引入自动化脚本或第三方库文件用于批量验证固件稳定性及其兼容性表现。例如pytest-bdd就是一个不错的选择,它允许使用者定义清晰易懂的行为驱动描述语句(Given/When/Then),从而降低维护成本的同时也提高了整体可靠性水平。 ```python from pytest_bdd import scenarios, given, when, then scenarios('features/embedded.feature') @given('the device is powered on') def power_on(): pass # Implement actual powering-on procedure here. @when('we send a command to read temperature sensor data') def read_temperature_sensor_data(device): response = device.send_command("GET_TEMP") assert isinstance(response, float) @then('it should return valid numeric value within expected range') def check_response_value(response): min_temp, max_temp = (-40.0, 85.0) # Example limits based on datasheet. assert min_temp <= response <= max_temp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大牛攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值