TM4C1294 LaunchPad硬件解析与嵌入式开发实战指南

TI TM4C1294 LaunchPad开发板:从硬件解析到以太网、PWM、USB驱动实战 微控制器(MCU)作为嵌入式系统的核心,其外设集成度与开发友好性直接影响产品开发效率。ARM Cortex-M4内核凭借其高性能与低功耗特性,成为复杂物联网节点和实时控制应用的理想选择。其技术价值在于通过高度集成的外设(如以太网MAC+PHY、高级PWM模块)和成熟的软件生态,显著降低硬件设计复杂度和BOM成本。在工业自动化、物联网网关等应用场景中,具备网络连接和精确运动控制能力的MCU至关重要。本文以德州仪器(TI)的Tiva C系列TM4C1294 Connected LaunchPad评估板为例,深入 阅读详情

1. 开箱即用:TM4C1294 Connected LaunchPad 硬件深度解析

如果你刚拿到这块德州仪器(TI)的Tiva C系列TM4C1294 Connected LaunchPad评估板,可能会被它丰富的接口和密密麻麻的元器件搞得有点懵。别担心,我当年第一次接触这块板子时也是这种感觉。但经过几个项目的实战,我发现这块板子设计得相当巧妙,它把ARM Cortex-M4F微控制器的强大性能和丰富的连接性都浓缩在了一块巴掌大的板子上,特别适合做物联网网关、工业控制器或者需要网络连接的教学实验。

这块板子的核心是TM4C1294NCPDTI这颗芯片,它内置了10/100M以太网MAC和PHY,这意味着你不需要外接网络芯片就能实现网络功能,大大简化了硬件设计。板载的USB 2.0接口、两个用户按键、四个用户LED,还有那个醒目的RJ45网口,都让它在同类开发板中显得格外实用。我最开始用它做智能家居网关项目时,就是看中了它“开箱即用”的网络能力——插上网线就能跑TCP/IP协议栈,省去了很多底层调试的麻烦。

不过,要真正用好这块板子,光看表面是不够的。你得理解它的硬件架构设计逻辑,知道每个接口背后的电气特性,明白那些跳线帽(JP1-JP5)到底在控制什么。比如,板子左上角那个小小的U6接口,它遵循ARM标准的10针JTAG引脚定义,可以接外部调试器,但很多人不知道的是,它同时支持JTAG和SWD两种调试协议,这取决于你用的调试适配器。再比如,板子中间那两个2x2的跳线帽JP4和JP5,它们控制着UART0和UART2的映射关系,默认配置下UART0连接到ICDI的虚拟串口,这样你就能用板载的调试芯片直接进行串口通信和ROM引导加载;但如果把跳线帽改成垂直连接,UART2就会映射到虚拟串口,而CAN总线信号则会出现在BoosterPack 2接口上——这个细节在调试CAN总线应用时至关重要。

2. 核心硬件模块详解与设计思路

2.1 微控制器与时钟系统:性能基石

TM4C1294NCPDTI这颗芯片是整块板子的“大脑”,它基于ARM Cortex-M4F内核,主频最高120MHz,内置1MB Flash和256KB SRAM,还有6KB的EEPROM。但最让我印象深刻的是它的外设集成度:除了前面提到的以太网和USB,它还有8个UART、4个SSI(SPI)、10个I2C、2个CAN 2.0、1个USB 2.0 OTG,以及16个PWM通道和2个QEI(正交编码器接口)。这意味着你可以用它做电机控制、多串口通信、传感器网络等各种应用,而不用频繁外扩芯片。

时钟系统是微控制器稳定运行的基础。板子上用了三颗晶体振荡器:Y1是25MHz的主时钟晶体,为系统主时钟和以太网PHY提供基准;Y2是16MHz的晶体,专门给板载的调试芯片TM4C123GH6PMI使用;Y3是32.768kHz的RTC晶体,用于休眠模块的精确计时。这里有个经验之谈:如果你发现以太网连接不稳定或者根本连不上,首先要检查的就是25MHz晶体是否正常起振。我曾经遇到过因为晶体负载电容不匹配导致网络丢包的问题,后来在TivaWare的驱动库里调整了晶体相关的配置参数才解决。

电源设计也很有讲究。板子可以通过三种方式供电:通过调试USB口(U22)、通过目标USB口(U7),或者通过BoosterPack接口的5V引脚。选择哪种供电方式由JP1跳线帽决定。我建议初学者就用默认的调试USB供电,因为这样最方便,而且TPS2052B负载开关会提供过流保护。如果你要用BoosterPack供电,记得TPS2052B的限流功能会被绕过,需要自己注意电流限制。

2.2 调试与编程接口:开发效率的关键

这块板子最贴心的地方就是集成了完整的调试和编程方案。板载的ICDI(In-Circuit Debug Interface)基于TM4C123GH6PMI微控制器实现,它通过USB连接到你的电脑后,会枚举成两个设备:一个调试器和一个虚拟串口。这意味着你只需要一根USB线,就能同时完成程序下载、单步调试和串口打印输出,大大简化了开发环境搭建。

ICDI支持JTAG调试协议,虽然文档里提到“目前只支持JTAG”,但根据我的实测,如果你用支持SWD的外部调试器连接到U6接口,实际上是可以使用SWD模式的。SWD只需要两根线(SWDIO和SWCLK),比JTAG的四线制更节省引脚,这在引脚资源紧张时很有用。不过要注意,使用外部调试器时,需要将JP1旁边的R40电阻(0欧姆)焊上,否则ICDI芯片不会释放对调试信号线的控制权。

虚拟串口功能是我用得最多的特性之一。默认情况下,UART0的TX和RX信号通过JP4和JP5跳线帽连接到ICDI芯片,然后在电脑上显示为一个COM口。你可以用任何串口工具(如Putty、Tera Term)来收发数据,波特率最高可以到3Mbps。但这里有个坑:如果你需要用到CAN总线,就必须把JP4和JP5改成垂直连接,这样UART0会断开,UART2会连接到虚拟串口。这时候ROM引导加载器就不能通过UART0工作了,你需要通过其他方式(如JTAG)来烧录程序。

2.3 扩展接口设计:BoosterPack生态与自定义扩展

BoosterPack是TI LaunchPad系列的一大特色,它是一种标准的40针扩展接口,分为BoosterPack 1和BoosterPack 2两个独立的接口。每个接口都包含电源(3.3V、5V、GND)、大量的GPIO、模拟输入、通信接口(UART、I2C、SPI)和专用功能引脚(如PWM、QEI)。这种设计让硬件模块化成为可能——你可以买现成的传感器BoosterPack、显示屏BoosterPack、电机驱动BoosterPack,像搭积木一样快速构建系统。

BoosterPack 1和2的引脚定义略有不同。BoosterPack 1完全遵循最新的BoosterPack XL标准,但PA6引脚(X8-16)没有模拟功能,这是因为PA6和PA7还被板载的无线模块占用了(虽然这个无线模块在标准版上没有焊接)。如果你要用这两个引脚,需要在软件里先把无线模块的GPIO配置为三态。BoosterPack 2则增加了一些特殊功能:通过JP4和JP5跳线帽,你可以选择将CAN总线信号映射到接口上,这个设计是为了兼容早期的Tiva C系列LaunchPad和Stellaris LaunchPad的CAN接口位置。

I2C总线的设计体现了TI的用心良苦。为了同时兼容旧版和新版BoosterPack标准,板子上在BoosterPack 2接口的右侧(通过R19和R20两个0欧姆电阻)和底部都提供了I2C信号。我建议尽量使用底部的位置,因为这是新版标准推荐的位置,兼容性更好。如果你不需要右侧的I2C,完全可以把R19和R20拆掉,这样PB2和PB3引脚就可以用作普通GPIO或其他功能。

除了BoosterPack,板子底部还有一个98孔的扩展焊盘(X11),间距是标准的0.1英寸(2.54mm)。这个设计非常巧妙——你可以焊接两个直角排针(比如Samtec TSW-149-09-F-S-RE和TSW-149-08-F-S-RA),然后把整个LaunchPad插到面包板上。这样所有GPIO、电源和地线都引出来了,做原型验证时特别方便。不过焊接时要小心,针脚很密,最好用热风枪和适量的焊锡膏。

3. 软件生态与开发环境搭建实战

3.1 TivaWare软件库:驱动开发的“瑞士军刀”

TivaWare是TI为Tiva C系列微控制器提供的软件套件,它包含外设驱动库(Peripheral Driver Library)、USB库、图形库、传感器库等。对于TM4C1294这块板子,最重要的是外设驱动库和以太网协议栈。驱动库采用寄存器抽象层设计,你不用直接操作那些复杂的寄存器位域,而是通过直观的API函数来配置和使用外设。

比如要初始化一个UART,传统做法可能要写几十行寄存器配置代码,但在TivaWare里,你只需要这样:

#include "driverlib/uart.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"

// 启用UART0和GPIOA外设时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

// 配置PA0和PA1为UART功能
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

// 初始化UART:115200波特率,8数据位,1停止位,无校验
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
                     UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                     UART_CONFIG_PAR_NONE);

这种抽象大大降低了开发难度。但我要提醒一点:TivaWare的文档虽然全面,但有些高级功能的示例不够详细。比如以太网驱动,官方提供了lwIP和uIP两种协议栈的示例,但如果你要移植其他协议栈(如Contiki),可能需要自己实现底层驱动。我建议初学者先从lwIP的示例开始,因为它功能更完整,社区支持也更好。

3.2 开发工具链选择与配置要点

TI官方支持五种开发环境:Keil MDK-ARM、IAR Embedded Workbench、Sourcery CodeBench、GCC和Code Composer Studio(CCS)。每种工具都有其特点,选择哪个主要看你的使用习惯和项目需求。

如果你是企业用户,有正版授权,Keil和IAR是不错的选择,它们的调试器功能强大,代码优化效率高。但对于个人开发者或学生,我强烈推荐Code Composer Studio,因为它是免费的,而且和TI的芯片结合得最好。CCS基于Eclipse,支持代码补全、实时变量查看、性能分析等高级功能。最新版的CCS还集成了EnergyTrace技术,可以实时监测板子的功耗,对于低功耗应用开发特别有用。

安装完开发环境后,第一件事就是导入TivaWare。在CCS里,你可以通过“Project -> Import CCS Projects”来导入TivaWare安装目录下的示例工程。默认路径是 C:\ti\TivaWare_C_Series_<版本号>\examples\boards\ek-tm4c1294xl 。这里有几十个示例程序,从最简单的GPIO控制到复杂的以太网Web服务器都有。我建议按这个顺序学习:先跑通blinky(LED闪烁),理解工程结构;然后试试uart_echo(串口回显),掌握串口通信;最后再挑战enet_lwip(以太网示例)。

编译工程时可能会遇到一些常见问题。比如,如果你用的是评估版编译器,可能会有代码大小限制,一些复杂的示例(如图形界面示例)可能编译不过。这时候你需要购买正式授权,或者改用GCC编译器。GCC是开源的,没有代码大小限制,但配置起来稍微麻烦一些。TivaWare里已经包含了GCC的makefile,你可以在命令行里直接运行 make 来编译。

3.3 固件烧录与调试实操步骤

给LaunchPad烧录程序有多种方法,但最常用的还是通过板载的ICDI。下面是详细的步骤,我会补充一些官方文档里没写的细节:

  1. 硬件连接 :用Micro-USB线连接板子的Debug USB口(U22)到电脑。注意,一定要用数据线,有些充电线只有电源线,无法通信。连接后,板子左上角的电源LED(D0)应该亮起,表示3.3V电源正常。

  2. 驱动安装 :Windows系统可能会自动安装驱动,但有时会失败。如果设备管理器里看到未知设备,你需要手动安装。驱动在TivaWare的安装目录下: C:\ti\TivaWare_C_Series_<版本号>\tools\windows\icdi_win 。运行 dpinst_amd64.exe (64位系统)或 dpinst_x86.exe (32位系统)。安装完成后,设备管理器里应该看到两个设备:“Stellaris In-Circuit Debug Interface”和“Stellaris Virtual Serial Port (COMx)”。

  3. 配置LM Flash Programmer :这是TI提供的免费烧录工具,适合批量生产或快速烧录。打开软件后,在Configuration标签页的“Quick Set”下拉框里选择“TM4C1294XL LaunchPad”。如果软件识别不到设备,检查USB连接和驱动,或者尝试按一下板子的复位键。

  4. 选择固件文件 :切换到Program标签页,点击Browse,导航到示例程序的二进制文件。这里有个技巧:TivaWare的示例程序编译后会在对应工具链的目录下生成.bin文件。比如CCS工程编译后,在Debug或Release文件夹里找.bin文件。如果你用Keil,则在Objects文件夹里找。

  5. 烧录设置 :我建议勾选“Verify After Program”和“Reset MCU After Program”。擦除方式选“Erase Necessary Pages”就行,这样只擦除要编程的页,速度更快。如果你要完全清空Flash,比如恢复出厂程序,才需要选“Erase Entire Flash”。

  6. 开始烧录 :点击“Program”按钮,进度条走完后,如果验证通过,程序会自动运行。这时候你可以打开串口工具,设置正确的COM口和波特率(通常是115200),就能看到程序的输出了。

如果你用的是CCS或Keil这样的IDE,调试会更方便。在CCS里,新建一个Target Configuration,选择“Stellaris In-Circuit Debug Interface”,然后就可以设置断点、单步执行、查看变量了。调试以太网程序时,我习惯在lwIP的 netif->input 函数里设断点,这样可以捕获所有收到的网络包,方便分析协议交互。

4. 网络功能实战:从硬件连接到协议栈调试

4.1 以太网硬件电路设计与信号完整性

TM4C1294的一大卖点是集成了10/100M以太网MAC和PHY,这意味着你不需要外接网络芯片,只需要一些外围元件就能实现网络连接。板子上的以太网电路主要包括三部分:变压器(U10)、RJ45接口(U14)和ESD保护二极管(U13)。

变压器HX1198FNL(也可以用HX1188FNL,但HX1198FNL性能更好)负责信号隔离和阻抗匹配。它的初级和次级之间要有1500V的隔离电压,这是安规要求。变压器周围那些49.9欧姆的电阻(R21-R24)是终端匹配电阻,用来消除信号反射。75欧姆的电阻(R32、R43、R45、R46)和3300pF电容(C32、C33)组成偏置网络,给PHY的发送和接收差分对提供共模电压。

如果你要设计自己的以太网电路,有几点要注意:第一,变压器要尽量靠近RJ45接口,差分走线要等长、等距,避免90度拐角;第二,终端电阻要靠近PHY芯片的引脚;第三,电源滤波要干净,特别是模拟电源部分,最好用磁珠隔离。这块LaunchPad的设计很规范,你可以直接参考它的布局布线。

软件配置上,以太网PHY需要通过MDIO接口初始化。TivaWare提供了完整的驱动,你只需要调用 EMACPHYConfigSet() 来设置PHY的工作模式(速度、双工、自动协商等)。默认示例程序已经配置好了,但如果你遇到连接问题,可以尝试强制设置成10M半双工模式,这是最兼容的模式,然后再逐步调试。

4.2 lwIP协议栈集成与Web服务器示例

TivaWare里以太网示例用的是lwIP(Lightweight IP)协议栈,这是一个开源的TCP/IP协议栈,特别适合嵌入式系统。lwIP提供了TCP、UDP、IP、ICMP、DHCP、DNS等协议实现,内存占用很小,但功能足够强大。

最简单的入门示例是 enet_lwip ,它实现了一个简单的Web服务器,你可以在浏览器里访问板子的IP地址,控制LED和读取按键状态。这个示例的代码结构很有代表性:

  • main() 函数里初始化系统时钟、GPIO、以太网和lwIP
  • lwIPInit() 设置网络接口,注册接收回调函数
  • lwIPPeriodic() 在主循环里被调用,处理网络包
  • HTTP服务器在 httpd.c 里��现,使用lwIP的netconn API

运行这个示例前,你需要确保板子通过网线连接到路由器,并且路由器开启了DHCP服务。程序启动后会通过DHCP获取IP地址,并在串口打印出来。如果获取失败,它会使用静态IP 192.168.1.100 。你可以在代码里修改这个IP,或者实现一个Web配置页面来动态设置。

我在实际项目中遇到过几个典型问题。一是网络连接不稳定,时断时续。这通常是硬件问题,检查网线、变压器焊接、终端电阻值。二是DHCP获取失败,可能是路由器不支持,或者网络中有IP冲突。三是HTTP响应慢,这是因为lwIP默认使用单线程,如果处理复杂的HTTP请求,会阻塞网络接收。解决方法是用RAW API,或者开一个单独的线程处理HTTP。

4.3 高级网络应用:TCP客户端、UDP广播与网络安全考虑

掌握了基本的Web服务器后,你可以尝试更复杂的网络应用。比如实现一个TCP客户端,连接到云服务器上传传感器数据;或者实现一个UDP广播服务,在局域网内发现设备。

TCP客户端示例的关键是处理连接断开和重连。lwIP的TCP API是回调式的,你需要注册 connected 、 sent 、 recv 、 err 等回调函数。当连接断开时, err 回调会被触发,这时候应该延时一段时间后尝试重连。我通常用一个状态机来管理连接状态:初始化->连接中->已连接->断开->重连等待。

UDP广播适合设备发现和实时数据传输。比如,你可以让设备每秒广播一次自己的状态(IP地址、传感器读数等),其他设备监听这个广播包。但要注意,UDP是不可靠的,可能会丢包,而且广播包会增加网络负载,不适合高频发送。

安全性是物联网设备必须考虑的问题。TM4C1294没有硬件加密引擎,但你可以用软件实现基本的加密。对于Web服务器,至少要支持HTTPS(在lwIP上实现TLS),避免密码明文传输。对于固件升级,要验证数字签名,防止被注入恶意代码。TivaWare提供了一些加密库(如AES、SHA),但完整的TLS实现可能需要第三方库,如mbed TLS。

5. 电源管理与低功耗设计技巧

5.1 多电源输入设计与切换逻辑

LaunchPad支持三种供电方式,通过JP1跳线帽选择。这个设计很灵活,但使用时要注意一些细节。

当JP1连接5-6脚(默认位置)时,板子从Debug USB口取电。这时候TPS2052B负载开关会提供过流保护,最大电流约1A。这个模式最适合开发和调试,因为调试和供电用同一根线,最简洁。

当JP1连接3-4脚时,板子从Target USB口(U7)取电。这个口是Micro-AB型,既可以做Host也可以做Device。如果你要做USB主机,比如接U盘或USB摄像头,就需要用这个模式。但要注意,USB主机模式下,TPS2052B会控制VBUS的通断,由PD6引脚(配置为USB0EPEN功能)控制。

当JP1连接1-2脚时,板子从BoosterPack接口的5V引脚取电。这时候TPS2052B被绕过,没有过流保护。如果你外接的BoosterPack有短路风险,最好自己加保险丝。另外,这种模式下USB主机功能不能给外设供电,因为VBUS没有连接。

JP2和JP3是两个有用的测试点。JP2断开后,MCU的3.3V供电就和板子其他部分隔离了,你可以在这里串联电流表,精确测量MCU的功耗。JP3断开后,TPS73733 LDO的输出就和板子3.3V网络断开了,你可以外接一个干净的3.3V电源给MCU供电,做电源噪声测试。

5.2 低功耗模式实战:从Run到Hibernate

TM4C1294支持多种低功耗模式:Sleep、Deep Sleep、Hibernate。每种模式的功耗和唤醒方式不同,适合不同的应用场景。

Sleep模式最简单,只是停止CPU时钟,外设继续运行。进入Sleep模式后,任何中断都可以唤醒。功耗可以从几十mA降到十几mA。实现代码很简单:

// 进入Sleep模式
SysCtlSleep();

// 唤醒后从这里继续执行

Deep Sleep模式更省电,它会关闭主振荡器和PLL,只保留低频时钟(内部或外部32kHz)。功耗可以降到几百微安。进入Deep Sleep前,要配置好唤醒源,比如GPIO中断、RTC定时器、看门狗等。示例:

// 配置PA0引脚下降沿中断唤醒
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_0, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTA_BASE, GPIO_PIN_0);
IntEnable(INT_GPIOA);

// 进入Deep Sleep
SysCtlDeepSleep();

Hibernate模式是最省电的,它完全关闭芯片的主电源域,只保留极低功耗的休眠模块和32kHz晶体振荡器。功耗可以低到2微安以下!但Hibernate模式也最复杂:芯片完全复位唤醒,所有RAM数据都会丢失(除了休眠模块自带的少量SRAM)。你需要把要保存的数据存到Flash或EEPROM里,或者用休眠模块的SRAM。

Hibernate模式的硬件电路需要特别注意。板子上有专门的32.768kHz晶体(Y3)给休眠模块提供时钟,还有R38(51欧姆)和C3(0.1uF)组成的RC电路,用来满足VBAT的上电时序要求。如果你发现芯片无法从Hibernate模式唤醒,首先检查这个晶体是否起振,VBAT电压是否正常(应该在2.0V-3.6V之间)。

5.3 功耗测量与优化经验

测量功耗是低功耗设计的关键。我通常用两种方法:一是用万用表串联在JP2上,测量MCU的静态电流;二是用示波器看电源纹波,特别是从休眠模式唤醒时的电流尖峰。

有几个常见的功耗陷阱需要注意:

  1. 浮空引脚 :未使用的GPIO引脚如果配置为输入且浮空,会因漏电流增加功耗。应该配置为输出低电平,或者使能内部上拉/下拉。

  2. 未关闭的外设时钟 :每个外设模块都有独立的时钟门控。进入低功耗模式前,要关闭不需要的外设时钟。TivaWare提供了 SysCtlPeripheralSleep() 和 SysCtlPeripheralDeepSleep() 函数来简化这个操作。

  3. Flash等待状态 :高频运行时,Flash需要插入等待状态,这会增加功耗。如果对性能要求不高,可以降低系统时钟频率,减少等待状态。

  4. 电源模式转换开销 :在Sleep和Deep Sleep之间频繁切换,转换本身也有功耗。要根据实际需求选择合适的休眠时长,避免“频繁浅睡”。

我做过一个传感器节点项目,要求电池供电一年以上。最终方案是:大部分时间在Hibernate模式(2uA),每5分钟用RTC唤醒,采集传感器数据并通过LoRa发送(峰值电流80mA),发送完立即回到Hibernate。平均电流不到200uA,用2000mAh的电池可以撑一年多。

6. 扩展接口高级应用与信号完整性

6.1 BoosterPack信号复用与冲突避免

TM4C1294的每个GPIO引脚都有多达8种复用功能,通过 GPIOPCTL 寄存器配置。这种灵活性带来了便利,也带来了冲突的可能。比如,PA6和PA7这两个引脚,既可以用作普通GPIO,也可以用作UART2的TX/RX,还可以用作I2C6的SCL/SDA,但同时它们又被板载的无线模块(未焊接)占用了。如果你要用这两个引脚,必须在软件里先把无线模块的GPIO配置为三态。

BoosterPack接口的引脚复用情况在用户手册的表2-1和表2-2里有详细列出,但那个表看起来有点复杂。我总结了一个快速查询的方法:先确定你要用的外设(比如UART0),然后在表中找到对应的引脚(PA0和PA1),再看这个引脚在BoosterPack上的位置(BP1的A1-3和A1-4)。如果这个引脚已经被其他功能占用,就要考虑换一个外设实例(比如用UART1代替)。

I2C总线的设计是个特例。为了兼容新旧BoosterPack标准,板子上有两组I2C信号:一组在BoosterPack 2的底部(PN4和PN5),这是新版标准的位置;另一组在右侧(通过R19和R20连接),这是旧版标准的位置。如果你不需要旧版兼容,可以把R19和R20拆掉,释放PB2和PB3引脚用作其他功能。但要注意,PB2和PB3还是JTAG的TCK和TDI信号,如果你要用外部调试器,就不能占用这两个引脚。

6.2 高速信号布局与阻抗控制建议

虽然LaunchPad已经做好了PCB布局,但当你设计自己的BoosterPack或扩展板时,信号完整性就很重要了。特别是以太��、USB和高速SPI这些信号。

以太网的差分对(TX+/TX-、RX+/RX-)要求100欧姆差分阻抗。LaunchPad上用的是表层微带线,线宽和间距经过计算匹配了阻抗。如果你要画扩展板,最好用SI9000这类工具算一下。差分对要等长、等距,避免在过孔附近走线,如果必须打过孔,要对称地打一对过孔。

USB 2.0全速(12Mbps)对信号完整性的要求相对宽松,但也要注意:D+和D-要等长,远离噪声源(如开关电源、电机驱动)。USB线外层最好包地,减少辐射。

高速SPI(比如用于TFT屏的80MHz QSPI)是最容易出问题的。时钟线要尽量短,和数据线等长。如果线长超过10cm,就要考虑加串联匹配电阻,阻值一般在22-100欧姆之间,具体要看驱动能力和负载电容。我通常先用示波器看眼图,如果过冲严重就加大电阻,如果上升沿太缓就减小电阻。

模拟信号(ADC输入)要特别注意。TM4C1294有20个12位ADC通道,但并不是所有GPIO都有模拟功能。BoosterPack接口上标有“Analog”的引脚才能接模拟信号。布线时要远离数字信号,特别是时钟线和PWM输出。如果模拟信号线很长,可以在输入端加一个RC低通滤波,滤除高频噪声。

6.3 自定义扩展板设计检查清单

基于LaunchPad做二次开发时,我习惯用这个检查清单来确保扩展板设计正确:

  1. 电源部分 :
  • 扩展板的5V输入电流不要超过1A(如果从LaunchPad取电)
  • 3.3V LDO的输入输出要加足够大的滤波电容(至少10uF电解+0.1uF陶瓷)
  • 如果有电机等大电流负载,最好单独供电,避免干扰MCU
  1. 信号连接 :
  • 确认每个GPIO的复用功能没有冲突
  • I2C总线要加上拉电阻(4.7k-10k),SDA和SCL都要
  • UART的TX要接LaunchPad的RX,RX接TX,别接反了
  • SPI的片选信号要默认上拉,避免意外选中
  1. 机械结构 :
  • BoosterPack接口是2x20的2.54mm排针,注意引脚顺序
  • 如果扩展板面积较大,要考虑固定孔,避免插拔时受力过大
  • 元件高度不要超过LaunchPad的元件,否则无法堆叠其他BoosterPack
  1. 测试点 :
  • 关键信号(如复位、时钟、电源)要留测试点
  • 串口RX/TX最好引出到排针,方便调试
  • 预留一个LED和按键,用于基本功能测试

7. 常见问题排查与调试心得

7.1 硬件相关故障诊断

问题1:板子完全不工作,电源LED不亮

这是最让人头疼的情况。首先检查USB线是否正常,可以用手机充电试试。如果USB线正常,用万用表测量TPS73733 LDO的输出(C20电容两端),应该是3.3V。如果没有输出,可能是LDO坏了,或者输入电压不对。TPS73733的输入是5V,来自TPS2052B。测量TPS2052B的输入(U22的VBUS引脚),应该是5V。如果这里也没电,可能是USB接口虚焊,或者保险丝烧了(板子上没有明显标出保险丝,但有些批次可能有)。

如果3.3V正常,但MCU还是不工作,检查复位信号。正常时复位引脚(芯片的70脚)应该是高电平(3.3V),按下复位键时变低。如果一直是低电平,可能是复位电路有问题,或者芯片已经损坏。

问题2:以太网连接不稳定,时断时续

先确认网线和水晶头没问题。然后检查变压器(U10)周围的元件:四个49.9欧姆的终端电阻(R21-R24)是否焊接良好,阻值是否正确;两个75欧姆电阻(R32、R43)和两个3300pF电容(C32、C33)是否正常。这些元件任何一个出问题都会导致信号反射,引起连接不稳定。

软件上,可以尝试强制设置PHY的工作模式,而不是自动协商。在 EMACPHYConfigSet() 函数里,把 EMAC_PHY_TYPE_100BASETX 和 EMAC_PHY_AUTONEGOTIATE 改成 EMAC_PHY_TYPE_10BASET 和 EMAC_PHY_SPEED_10 | EMAC_PHY_DUPLEX_HALF ,看10M半双工模式是否稳定。如果稳定,说明可能是自动协商有问题,或者变压器不支持100M。

问题3:USB无法识别或频繁断开

如果是Device模式无法识别,检查USB ID引脚(PB0)的配置。Device模式下,这个引脚应该通过1.5k电阻上拉到3.3V。LaunchPad上已经做了这个设计,但如果你改了软件配置,可能会影响。

如果是Host模式无法给外设供电,检查PD6引脚的配置。PD6要配置为USB0EPEN功能,输出高电平,才能打开TPS2052B的使能。可以用万用表测量TPS2052B的输出(U7的VBUS),应该有5V。如果没有,可能是PD6配置错误,或者TPS2052B损坏。

USB信号线(D+和D-)上串联了22欧姆的电阻(原理图上没标,但PCB上有),这是阻抗匹配用的。如果这些电阻虚焊或阻值不对,也会导致信号质量差。

7.2 软件调试技巧与工具使用

技巧1:利用ITM实现printf调试

JTAG调试虽然强大,但有时候不方便。这时候可以用ITM(Instrumentation Trace Macrocell)功能,通过SWO引脚输出调试信息。TM4C1294的SWO信号在U6接口的6脚(TDO/SWO)。你需要在代码里初始化ITM,然后就可以用 ITM_SendChar() 函数输出字符,在调试器里查看。

设置方法:在CCS里,打开Target Configuration,在Debugger标签页的“Connection”里选“SWD”,然后勾选“Enable SWO”。在“SWO Clock”里填上系统时钟频率(比如120000000)。在代码里添加:

#include "driverlib/itm.h"

ITMInit(120000000);  // 初始化ITM,参数是系统时钟频率
ITMSendChar('A');    // 发送一个字符

然后在CCS的“View -> SWO”窗口里就能看到输出。

技巧2:使用FPU加速数学运算

Cortex-M4F内核有硬件浮点单元(FPU),但默认情况下编译器可能不会用。要在CCS里启用FPU:项目属性 -> ARM Compiler -> Processor Options -> Floating Point Support,选“FPv4SPD16”。在代码里,要调用 FPUEnable() 来启用FPU。

启用FPU后,浮点运算速度能提升几十倍。但要注意,FPU只有单精度(float),没有双精度(double)。双精度运算还是用软件模拟,很慢。

技巧3:优化中断响应时间

中断响应时间是实时系统的关键指标。TM4C1294的中断控制器(NVIC)支持优先级分组和抢占。默认情况下,所有中断优先级都是0,这意味着它们不能互相抢占。如果你有高优先级的中断(比如电机控制PWM),要设置更高的优先级。

设置中断优先级时,注意优先级数值越小优先级越高。但更重要的概念是抢占优先级和子优先级。通过 NVICPriorityGroupingSet() 设置分组后,优先级寄存器的高几位表示抢占优先级(可以打断低抢占优先级的中断),低几位表示子优先级(同抢占优先级时比较)。

我通常这样设置:系统滴答定时器(SysTick)用最低优先级,因为它是时间基准;通信接口(UART、SPI)用中等优先级;紧急控制(急停、故障保护)用最高优先级。

7.3 性能优化与代码大小控制

Flash和RAM的使用优化

TM4C1294有1MB Flash和256KB RAM,对于大多数应用足够了。但如果你要跑完整的TCP/IP协议栈、文件系统、图形界面,可能还是会紧张。有几个优化方法:

  1. 使用编译优化 :在CCS里,优化等级从低到高有-O0(不优化)、-O1、-O2、-O3、-Os(优化代码大小)。调试时用-O0,发布时用-Os或-O2。-O3可能使代码变大。

  2. 合理使用const和static :const变量放在Flash里,节省RAM。static局部变量只在第一次调用时初始化,适合保存状态。

  3. 使用内存池 :频繁分配释放内存会产生碎片。可以预先分配几个固定大小的内存池,用的时候从池里取。

  4. 压缩固件 :如果Flash真的不够,可以考虑压缩固件,在启动时解压到RAM运行。但这会增加启动时间和代码复杂度。

执行���度优化

120MHz的主频很快,但不当的编程习惯还是会拖慢速度:

  1. 避免在中断里做耗时操作 :中断处理函数要尽量短,只做必要的标志设置,具体处理放到主循环里。

  2. 使用DMA :大量数据搬运(如UART收发、ADC采样、SPI传输)用DMA,不占用CPU时间。TM4C1294有8通道DMA,支持外设到内存、内存到外设、内存到内存的传输。

  3. 启用指令缓存 :TM4C1294有2KB的指令缓存,默认是关闭的。调用 SysCtlEnableCache() 可以开启,能显著提升Flash代码的执行速度。

  4. 合理使用等待状态 :Flash访问需要等待状态,120MHz时要设置2个等待状态。但如果你降频到60MHz,可以设1个等待状态,实际性能可能差不多,但功耗更低。

电源效率优化

低功耗不仅仅是休眠模式的事,运行时的功耗也要优化:

  1. 动态电压频率调整 :TM4C1294支持动态调整内核电压和频率。轻负载时降频降压,能显著降低功耗。TivaWare提供了 SysCtlClockSet() 函数,可以实时调整时钟。

  2. 外设时钟门控 :不用的外设及时关闭时钟。比如初始化完ADC后,如果长时间不用,就调用 SysCtlPeripheralDisable() 关闭ADC时钟。

  3. RAM保持模式 :在Deep Sleep模式下,可以选择保持部分RAM的内容。这样唤醒后数据还在,不用重新初始化,节省了时间和功耗。

  4. IO引脚状态 :输出引脚避免悬空,输入引脚使能内部上拉或下拉,减少漏电流。

经过这些优化,我做过的一个数据采集系统,平均功耗从80mA降到了15mA,电池续航从10小时延长到了50小时。关键是要根据应用场景选择合适的优化组合,在性能、功耗和开发复杂度之间找到平衡。

TM4C1294XL ICDI驱动安装与调试环境配置全攻略 在嵌入式开发中,调试器驱动是连接开发板与PC的关键桥梁,它解决了硬件设备与操作系统之间的通信协议转换问题。其核心原理在于通过特定的驱动程序,将调试器(如ICDI、J-Link)的专用协议转换为系统可识别的标准接口,从而实现程序下载、单步调试和实时监控等核心功能。这项技术的价值在于为开发者提供了稳定可靠的底层连接,是进行任何实际嵌入式开发的前提。无论是ARM Cortex-M系列MCU开发,还是使用Keil、IAR等集成开发环境,正确的驱动安装都是首要步骤。本文聚焦于TI TM4C1294XL开发板,详细解析 阅读详情

相关推荐

TivaWare 2.2.0.295版本深度解析:API现代化、Bug修复与LaunchPad实战指南

在嵌入式系统开发中,固件库作为连接硬件与应用的关键中间层,其设计质量直接影响开发效率和系统稳定性。通过提供硬件抽象层,固件库将复杂的寄存器操作封装为简洁的API,降低了底层编程门槛。其技术价值在于提升代码可移植性、加速产品上市周期,并确保硬件功能被正确、高效地利用。常见的应用场景包括工业控制、物联网设备和消费电子等。本文聚焦TI TivaWare固件库的最新2.2.0.295版本,该版本的核心更新策略是推动API现代化与生态精简,例如将ROM_ API统一升级为更灵活的MAP_ API,并移除了过时的CC3

weixin_34006468的博客 346

CSS 动画(CSS3) animation

动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。 语法格式: animation:动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向; 关于几个值,除了名字,动画时间,延时有严格顺序要求其它随意r @keyframes 动画名称 { from{ 开始位置 } 0% to{ 结束 } 1...

快乐de馒头 289

TM4C嵌入式开发实战:从TivaWare驱动库到GPIO、UART与外设配置

在嵌入式系统设计中,基于Cortex-M4F内核的微控制器凭借浮点运算能力与丰富外设,成为工业控制与物联网节点的主流选择。TM4C系列作为TI主推的ARM MCU,其TivaWare驱动库提供了类似标准库的抽象层,开发者无需直接操作寄存器即可快速配置GPIO、UART、ADC和PWM等外设。但入门者常被时钟树、引脚复用和调试流程困扰。本文从开发环境搭建出发,讲解Keil下从零创建工程、系统时钟配置、串口中断接收以及定时器PWM输出等关键环节,并梳理了常见硬件陷阱与排查方法。无论你是从STM32迁移还是初次接

weixin_33910759的博客 313

TM4C1294NCPDT微控制器与SLO2016协议栈的工业应用

ARM Cortex-M4F内核微控制器凭借其高性能计算能力和丰富的外设接口,在工业自动化和物联网领域具有重要应用价值。以TI的TM4C1294NCPDT为例,该芯片集成浮点运算单元和DSP指令集,支持多种通信协议如以太网、CAN和USB,特别适合需要实时控制和多设备通信的场景。结合轻量级工业协议SLO2016,开发者可以实现高效的设备间数据传输和协议转换。通过硬件加速和DMA技术优化,系统吞吐量可提升243%,CPU占用率降低59%,为工业网关和实时监控系统提供了可靠解决方案。

367

TI IWR1642毫米波雷达评估板硬件解析与开发实战指南

毫米波雷达作为一种高精度感知技术,通过发射调频连续波(FMCW)并分析回波信号,能够精确测量目标的距离、速度和角度。其核心原理在于利用频率变化与时间延迟的关系,通过快速傅里叶变换(FFT)等信号处理技术解析目标信息。这项技术的价值在于其穿透性强、分辨率高且不受光照雨雾影响,因此在自动驾驶、工业传感和智能安防等领域应用广泛。本文聚焦于德州仪器(TI)的IWR1642BOOST评估板,该板集成了射频前端、DSP和MCU,为开发者提供了便捷的硬件平台。文章详细解析了其电源管理、调试接口、天线系统等核心硬件模块,并

weixin_33736048的博客 381

TI IWR1642毫米波雷达评估板硬件解析与软件开发实战指南

毫米波雷达是一种利用毫米波频段(30-300GHz)电磁波进行探测、测距、测速和成像的传感器技术。其核心原理基于调频连续波(FMCW),通过发射频率随时间线性变化的信号,并接收目标反射的回波,通过混频和傅里叶变换(FFT)等信号处理手段,解析出目标的距离、速度和角度信息。这项技术的价值在于其强大的环境感知能力,能够穿透烟、雾、灰尘,且不受光照条件影响,为全天候、高精度的非接触式测量提供了可能。其应用场景广泛覆盖了汽车辅助驾驶(ADAS)、工业自动化、智能家居和安防监控等领域。本文聚焦于德州仪器(TI)的IW

weixin_34059951的博客 468

TM4C1294XL开发板ICDI驱动安装与调试链路搭建全攻略

在嵌入式系统开发中,调试器驱动是连接集成开发环境(IDE)与目标硬件MCU的关键桥梁,其核心原理在于实现调试命令的协议转换与硬件抽象。以常见的ARM Cortex-M系列MCU为例,片上调试(OCD)功能通过JTAG或SWD接口实现,而调试器驱动则负责将IDE发出的高级调试API调用,转换为底层硬件调试器(如基于FTDI芯片的接口)能识别的USB数据包,最终通过JTAG/SWD协议与MCU内部的CoreSight调试组件通信。这一技术确保了代码下载、单步执行、断点设置等核心调试功能的实现,是嵌入式开发环境搭

weixin_30791095的博客 464

TivaWare固件库版本更新解析:BoosterPack支持与底层API优化

在嵌入式系统开发中,固件库作为连接硬件与应用的桥梁,其稳定性和功能性直接影响开发效率与产品可靠性。以ARM Cortex-M微控制器为例,厂商提供的固件库通过封装底层寄存器操作,提供标准化的驱动API,使开发者能聚焦于应用逻辑,而非硬件细节。其技术价值在于提升代码复用性、加速产品上市周期并降低维护成本,广泛应用于工业控制、物联网终端和人机交互等领域。本文聚焦TivaWare固件库的版本迭代,深入解析其对BoosterPack扩展板的生态支持增强,以及底层驱动API的关键优化与Bug修复,为基于Tiva C系

weixin_33690367的博客 344

TM4C入门到实战:基于Cortex-M4F的嵌入式开发与底层原理

微控制器是嵌入式系统的核心,而ARM Cortex-M系列凭借高性能与低功耗成为主流架构。Cortex-M4F内核在基础指令集上增加了硬件浮点单元和DSP指令,使PID控制、信号处理等计算任务不再依赖软件模拟,同时时钟树、外设门控、NVIC中断机制共同决定了系统的实时性与稳定性。理解这些原理,不仅有助于从寄存器层面掌握芯片工作方式,也能借助驱动库快速构建工程代码。在电子设计竞赛、工业控制、机器人等场景中,MCU选型和底层开发能力直接影响项目成败。TI TM4C系列微控制器以Cortex-M4F为核心,搭配完

weixin_30345577的博客 360

嵌入式开发中设备能力寄存器(DC)的原理与应用实践

在嵌入式系统开发中,硬件抽象层是实现代码可移植性和可复用性的关键技术。其核心原理在于通过标准化的接口屏蔽底层硬件差异,使软件能够自适应不同的微控制器平台。这一技术价值在于显著降低多型号芯片适配的开发成本,提升固件的健壮性。设备能力寄存器作为硬件抽象的关键实现机制,在ARM Cortex-M等架构中,通过一组只读的硬件寄存器,为软件提供了动态探测芯片实际外设资源的标准化方案。在嵌入式开发实践中,结合TI TivaWare驱动库,开发者可以构建出能够自动适配TM4C123G、TM4C1294等不同型号芯片的初始

weixin_34195364的博客 321

Tiva C图形库三层架构解析与嵌入式GUI开发实战

在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的关键技术。其核心原理在于通过分层架构管理图形渲染与用户输入,从而在资源受限的微控制器上平衡功能与性能。这项技术的价值在于,它能将复杂的像素操作和事件响应封装成可维护的模块,显著提升开发效率。典型的应用场景包括工业控制面板、智能家居显示终端和医疗设备界面等。本文聚焦于德州仪器Tiva C系列MCU的轻量级Graphics Library,深入剖析其显示驱动层、图形图元层和组件框架层构成的三层架构。其中,显示驱动层通过硬件抽象支持多种屏幕接口,图形图元层

weixin_34186128的博客 417

Tiva™ MCU深度睡眠时钟门控:DCGCx寄存器原理与低功耗实战

在嵌入式系统与物联网设备开发中,低功耗设计是延长电池续航、提升产品竞争力的核心技术。其核心原理在于有效管理微控制器的动态功耗与静态功耗,其中动态功耗与时钟频率直接相关。时钟门控技术通过精细控制外设模块的时钟供给,在系统进入深度睡眠等低功耗模式时,关闭非必要模块的时钟以消除其动态功耗,是实现超低功耗的关键手段。这项技术对于电池供电的传感器节点、便携式医疗设备等场景具有极高的工程价值。本文以TI Tiva™ C系列ARM Cortex-M微控制器为例,深入解析深度睡眠模式下的时钟门控寄存器(DCGCx),并结合

weixin_30632883的博客 343

TI CCS安装本质:嵌入式开发环境的系统级重构

Code Composer Studio(CCS)并非普通IDE,而是德州仪器(TI)硬件-软件深度协同的嵌入式开发平台,其核心涵盖编译器链、调试服务器、芯片支持包与SysConfig外设配置工具。理解CCS的本质,需从嵌入式开发环境构建原理出发:它通过统一工具链抽象底层JTAG/SWD协议、管理芯片生命周期适配,并支撑C2000、MSP432、Tiva-C等多架构实时控制开发。技术价值在于保障硬件驱动、外设时钟树、链接脚本与固件烧录的全链路一致性;典型应用场景包括电机FOC控制、工业PLC固件开发及边缘A

weixin_33834137的博客 436

TivaWare传感器库更新解析:LSM303D驱动与四元数工具在姿态解算中的应用

在嵌入式系统开发中,传感器数据融合是实现精确姿态感知与运动追踪的核心技术。其原理在于通过算法(如互补滤波、卡尔曼滤波)将来自加速度计、陀螺仪、磁力计等多源传感器的数据进行协同处理,以克服单一传感器的噪声、漂移等局限性,从而输出稳定、可靠的三维姿态信息。这项技术的价值在于为无人机、机器人、可穿戴设备等应用提供了关键的姿态参考,是实现自主导航、动作捕捉和用户交互的基础。本次TivaWare传感器库的更新,正是围绕这一核心需求,通过新增**LSM303D驱动**和**四元数工具函数**,为基于TM4C微控制器的开

weixin_34060299的博客 337

从裸机到RTOS:TI实时操作系统核心原理与电机控制实战

实时操作系统(RTOS)是嵌入式开发中管理多任务、确保实时性的核心软件架构。其基本原理是通过优先级调度、任务间通信等机制,将复杂应用分解为独立并发执行的任务单元,从而解决传统前后台系统中任务阻塞、响应延迟等问题。在电机控制、物联网设备等对时序要求严格的场景中,RTOS能显著提升系统的可靠性与可维护性。以TI RTOS为例,它提供了从内核、驱动到中间件的完整生态,尤其适合快速开发基于TI MCU的复杂应用。例如,在步进电机控制系统中,结合DRV8711驱动芯片,可利用TI RTOS的任务管理与IPC机制,实现

weixin_33816946的博客 377

zed(Rust)开源项目完整源码

「zed(Rust)开源项目完整源码」是开源项目(Rust)。项目简介:Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.源码完整,下载解压即可查看使用,适合学习参考、课程设计与二次开发。

Tiva™ MCU外设电源管理:PCx寄存器与时钟门控协同优化功耗

在嵌入式系统与物联网设备开发中,低功耗设计是延长电池寿命、提升产品竞争力的核心技术。其核心原理在于动态管理微控制器内部各功能模块的能耗,通过精细控制时钟与电源供给,实现功耗与性能的平衡。这项技术的核心价值在于它能将系统总功耗从毫安级降至微安级,对于传感器节点、便携医疗设备等场景至关重要。实现这一目标的关键在于理解并运用时钟门控与电源门控的协同机制。时钟门控通过RCGCx、SCGCx、DCGCx等寄存器,在不同运行模式下开关外设时钟以消除动态功耗;而电源门控则通过PCDMA、PCUART等PCx寄存器,在时钟

weixin_33698823的博客 427

不只是CPU主频:深入解析英飞凌Aurix TC3xx各外设时钟树(CAN、以太网、Flash时序如何配置)

本文深入解析英飞凌Aurix TC3xx系列微控制器的外设时钟树配置,涵盖CAN、以太网和Flash时序的优化方法。通过详细分析时钟系统架构、关键外设配置及多外设协同设计策略,帮助工程师实现高性能汽车电子控制单元(ECU)开发。特别关注系统时钟的灵活配置与EMC优化技巧,提升系统实时性和可靠性。

weixin_29189373的博客 399

TI Camera Adapter BoosterPack:解决嵌入式视觉开发中的电压电平转换难题

在嵌入式系统开发中,不同芯片与模块间的电压电平不匹配是一个常见挑战,它可能导致通信失败甚至硬件损坏。其核心原理在于数字信号需要统一的逻辑电平标准才能被正确识别。电压电平转换技术通过专用芯片(如TI的SN74AVCx系列),能自动、双向地将信号在不同电压域(如3.3V与1.8V)间进行转换,确保了信号完整性。这项技术的价值在于简化了硬件设计,提升了系统可靠性,是连接微控制器与各类外设(如传感器、存储器)的关键桥梁。其典型应用场景包括连接低电压摄像头模块、物联网节点通信以及任何存在混合电压逻辑的嵌入式平台。本文

chupu2979的博客 318

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体

这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。

Aloudata的博客 1662

MobaXterm详细使用教程

当然MobaXterm的功能远不止这些,但这些是最基本,最常用的,因此先拿出来讲。点击确定后,输入密码(输入密码时并不会显示,只管输入后按确定即可,第一次登陆成功后会提示保存密码,一般选择同意),就可以连接上虚拟机了。(2) 我们可以直接apt-get安装vim等常用功能(或者官网下载插件),实现在windows下模拟linux环境,这样就可以使用vi命令准备INCAR文件,也可以使用Gnuplot进行绘图。支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…

博客 4万+
上一篇: 嵌入式ADC数字比较器与UART硬件流控制协同应用实战
下一篇: 移动端AI开发:Codex API中转站实现低延迟调用
de1981
博客等级 码龄12年 8粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值