Embedded Software Engineer
Location
United States
Posted
9 days ago
Salary
$130K - $160K / year
No structured requirement data.
Job Description
Job Overview
We are looking for an Embedded Software Engineer who is passionate about writing firmware that runs on real hardware in safety-critical environments. In this role, you will develop and maintain firmware for our battery management systems running on STM32 microcontrollers, implementing core BMS functions including cell monitoring, protection algorithms, communication protocols, and sensor interfaces. You’ll work closely with hardware and senior firmware engineers to bring up new boards, integrate analog front ends, and ship production-quality firmware across multiple battery chemistries. This is a hands-on individual contributor role within a fast-moving, multi-disciplinary engineering team.
What You’ll Do
• Develop and maintain BMS firmware on STM32 platforms (Cortex-M33/M4) in C, targeting safety-critical battery applications across sodium-ion, lithium-titanate, and lithium-ion chemistries.
• Implement and test peripheral drivers for ADC, SPI, I2C, UART, CAN, DMA, and timers as part of the BMS firmware platform.
• Develop firmware for cell voltage and temperature monitoring, over/under-voltage and over-current protection, and thermal management.
• Implement and tune passive cell balancing algorithms for multi-series pack configurations.
• Integrate and validate analog front-end interfaces, including isolated amplifiers (AMC1301), current sense circuits, and voltage divider chains.
• Develop CAN bus communication firmware for BMS-to-host data exchange, status reporting, and command interfaces.
• Write, execute, and maintain unit tests and hardware-in-the-loop tests to validate firmware functionality and fault response.
• Support board bring-up activities: verify power rails, validate peripheral communication, and debug hardware/firmware integration issues.
• Collaborate with hardware engineers on schematic review and provide firmware-side input on signal routing, filtering, and component selection.
• Contribute to firmware documentation including design descriptions, interface specifications, and test procedures.
• Support safety compliance efforts by implementing firmware requirements derived from FMEA and fault tree analysis for UL 1973 certification.
• Participate in code reviews and contribute to continuous improvement of firmware development practices.
• Ability to either work in person at our Carlsbad, CA office or travel there as needed with a demonstrated track record of highly efficient, collaborative remote work.
Required Qualifications
• B.S. or M.S. in Computer Engineering, Electrical Engineering, Computer Science, or related field.
• 3+ years of experience developing embedded firmware in C for ARM Cortex-M microcontrollers.
• Hands-on experience with STM32 peripherals: ADC, SPI, I2C, UART, CAN, DMA, and GPIO.
• Experience with RTOS-based firmware development (FreeRTOS, Zephyr, or equivalent).
• Familiarity with embedded debugging tools and workflows (JTAG/SWD, logic analyzers, oscilloscopes).
• Understanding of analog signal chains as they relate to firmware: ADC sampling, filtering, calibration, and noise management.
• Experience with CAN bus communication protocols and message framing.
• Proficiency with version control (Git) and structured development workflows.
• Ability to read and interpret hardware schematics, datasheets, and reference manuals.
• Effective communication skills across various levels of the organization.
• Proven ability to multitask and thrive in a fast-paced startup environment, with minimal supervision.
Preferred Qualifications
• Experience with battery management system firmware or power electronics control.
• Exposure to functional safety concepts and safety-critical firmware practices.
• Knowledge of compliance standards for battery systems (UL 1973, UL 9540, IEC 62619).
• Experience with digital filtering techniques (moving average, low-pass IIR, Kalman filters) applied to sensor data.
• Familiarity with current sensing techniques, isolated measurement circuits, and precision ADC applications.
Prior Experience With
• C/C++ for embedded development.
• Hardware-in-the-loop testing and emulation frameworks (Renode, QEMU).
• CPLD or FPGA interfacing from a firmware perspective.
• Using Python for scripting, log analysis, and test automation.
• High-voltage systems (100V+) and associated safety practices.
Compensation & Benefits
• Salary range: $130,000 – $160,000 depending on experience and qualifications.
• Equity options as part of the compensation package.
• Comprehensive healthcare benefits (medical, dental, vision).
• Generous paid time off and paid holidays (PTO) policy.
|
Ready to write the firmware that powers the future of energy? Let’s talk.
Related Guides
Related Job Pages
More Full-stack Engineer Jobs
Senior Software Engineer
OzmoOzmo is a technology company that builds software products to solve device and application support at scale.
The role involves designing, building, and operating production SaaS features that integrate complex AI systems like RAG pipelines and multi-agent architectures, utilizing AI coding agents throughout the development lifecycle. Responsibilities also include owning these AI-enabled features end-to-end, from design and implementation through monitoring, incident response, and iterative improvement.
This position involves providing engineering support, inspection, and professional civil engineering for various public works, utilities, storm water, and transportation facilities/projects, as well as reviewing public and private development projects. Perform journey-level engin...
Are we not actively hiring for a role for your territory or expertise right now? Contact us anyway, we're always on the lookout for elite sales talent 🚀If you're a high-performing SDR, Account Executive, or Sales Leader who's passionate abo...
The role involves defining, developing, and evolving software across the full lifecycle of AI system development, including crafting front-end interfaces and building robust back-end services. Key tasks include designing and maintaining agentic workflows, developing and integrating AI models into production applications, and implementing orchestration logic for multi-agent systems.