- Add can_driver.h / can_driver.c: CAN2 on PB12/PB13 (AF9) at 500 kbps APB1=54 MHz, PSC=6, BS1=13tq, BS2=4tq, SJW=1tq → 18tq/bit, SP 77.8% Filter bank 14 (SlaveStartFilterBank=14); 32-bit mask; FIFO0 Accept std IDs 0x200–0x21F (left/right feedback frames) TX: velocity+torque cmd (0x100+nid, DLC=4) at 100 Hz via main loop RX: velocity/current/position/temp/fault feedback (0x200+nid, DLC=8) AutoBusOff=ENABLE for HW recovery; can_driver_process() drains FIFO0 - Add JLINK_TLM_CAN_STATS (0x89, 16 bytes) + JLINK_CMD_CAN_STATS_GET (0x10) Also add JLINK_TLM_SLOPE (0x88) + jlink_tlm_slope_t missing from Issue #600 - Wire into main.c: init after jlink_init; 100Hz TX loop (differential drive speed_rpm ± steer_rpm/2); CAN enable follows arm state; 1Hz stats telemetry - Add CAN_RPM_SCALE=10 and CAN_TLM_HZ=1 to config.h Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge pull request 'feat: Battery holder bracket (Issue #588)' (#589) from sl-mechanical/issue-588-battery-holder into main
Merge pull request 'feat: Visual odometry from RealSense stereo ORB (Issue #586)' (#593) from sl-perception/issue-586-visual-odom into main
Description
SaltyLab self-balancing bot firmware (STM32F722)
Languages
Python
67.1%
C
11.4%
JavaScript
9.2%
OpenSCAD
7.8%
HTML
1.5%
Other
2.9%