feat: report wheel speed and GPIO state periodically

This commit is contained in:
shenlefengnai-rgb
2026-10-05 19:49:49 +08:00
parent 34627fa6a0
commit 68e8fdbcb8
7 changed files with 234 additions and 335 deletions
+8 -12
View File
@@ -43,11 +43,9 @@ BO_ 1696 SDC_Heartbeat: 8 SDC_ACQ_DAC
BO_ 1697 SDC_ADC_InputVoltage: 2 SDC_ACQ_DAC
SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" VehicleController
BO_ 1698 SDC_InputFrequencies: 8 SDC_ACQ_DAC
SG_ Frequency_PA0 : 0|16@1+ (1,0) [0|65535] "Hz" VehicleController
SG_ Frequency_PA2 : 16|16@1+ (1,0) [0|65535] "Hz" VehicleController
SG_ Frequency_PA6 : 32|16@1+ (1,0) [0|65535] "Hz" VehicleController
SG_ Frequency_PB14 : 48|16@1+ (1,0) [0|65535] "Hz" VehicleController
BO_ 1698 SDC_WheelSpeed: 4 SDC_ACQ_DAC
SG_ WheelSpeed_LeftFront_PA0 : 0|16@1+ (0.001,0) [0|65.535] "m/s" VehicleController
SG_ WheelSpeed_RightFront_PA6 : 16|16@1+ (0.001,0) [0|65.535] "m/s" VehicleController
BO_ 1699 SDC_DAC_Set: 3 VehicleController
SG_ DAC_Select : 0|8@1+ (1,0) [1|2] "" SDC_ACQ_DAC
@@ -74,15 +72,13 @@ VAL_ 1701 ASSI_State 0 "AS_OFF" 1 "AS_READY" 2 "AS_DRIVING" 3 "AS_EMERGENCY" 4 "
CM_ BO_ 1696 "Standard ID 0x6A0. Sent every 100 ms on CAN1 and CAN2.";
CM_ BO_ 1697 "Standard ID 0x6A1. Filtered and calibrated physical input voltage before the hardware divider.";
CM_ BO_ 1698 "Standard ID 0x6A2. Sent every 20 ms. Frequency order is PA0, PA2, PA6, PB14.";
CM_ BO_ 1698 "Standard ID 0x6A2. Sent every 20 ms with two wheel speeds: left-front PA0 then right-front PA6. Raw value is mm/s (physical scale 0.001 m/s), derived from 49 pulses/rev and 1414 mm wheel circumference.";
CM_ BO_ 1699 "Standard ID 0x6A3. Accepted on CAN1 and CAN2. The on-wire voltage is an unsigned mV value. Each DAC is reset to 0 mV if its own control frame is not received again within 100 ms.";
CM_ BO_ 1700 "Standard ID 0x6A4. Sent on CAN1 and CAN2 after a DAC command. Result 0 indicates the I2C write failed.";
CM_ BO_ 1701 "Standard ID 0x6A5. Accepted on CAN1 and CAN2. Byte 0 selects the latched ASSI RGB lamp state: AS_OFF, AS_READY, AS_DRIVING, AS_EMERGENCY, or AS_FINISHED.";
CM_ BO_ 1702 "Standard ID 0x6A6. Sent at startup and whenever PD0-PD14 state changes, on CAN1 and CAN2.";
CM_ BO_ 1702 "Standard ID 0x6A6. Sent every 1000 ms on CAN1 and CAN2. Changed-mask bits accumulate PD0-PD14 transitions since the preceding report.";
CM_ SG_ 1696 Board_Identifier "Fixed board identifier 0xA1.";
CM_ SG_ 1698 Frequency_PA0 "TIM5_CH1 input capture on PA0.";
CM_ SG_ 1698 Frequency_PA2 "TIM9_CH1 input capture on PA2.";
CM_ SG_ 1698 Frequency_PA6 "TIM3_CH1 input capture on PA6.";
CM_ SG_ 1698 Frequency_PB14 "TIM12_CH1 input capture on PB14.";
CM_ SG_ 1698 WheelSpeed_LeftFront_PA0 "Left-front wheel speed. TIM5_CH1 input capture on PA0; 49 pulses/rev and 1414 mm circumference.";
CM_ SG_ 1698 WheelSpeed_RightFront_PA6 "Right-front wheel speed. TIM3_CH1 input capture on PA6; 49 pulses/rev and 1414 mm circumference.";
CM_ SG_ 1702 SDC_Input_State "Bit 0 through bit 14 map directly to PD0 through PD14.";
CM_ SG_ 1702 SDC_Changed_Mask "A set bit identifies an input that changed since the preceding GPIO-status frame.";
CM_ SG_ 1702 SDC_Changed_Mask "A set bit identifies an input that changed during the preceding 1000 ms reporting interval.";
+5 -5
View File
@@ -47,7 +47,7 @@ endobj
endobj
6 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20260922213520+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260922213520+08'00') /Producer (ReportLab PDF Library - \(opensource\))
/Author (\(anonymous\)) /CreationDate (D:20261005194858+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20261005194858+08'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (\376\377\000S\000D\000C\000-\000A\000C\000Q\000_\000D\000A\000C\000 \000C\000A\000N\000 b\245e\207\213\364f\016\210h) /Trapped /False
>>
endobj
@@ -58,10 +58,10 @@ endobj
endobj
8 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2151
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2289
>>
stream
Gb!;fh/h((&:`#5Tg!QhR79`J0:Nh#kSMSP$(!`jF>-9*)FC,(+b;*3d(d7Eq=JfBT?eu4mA(J_G-tMWp:%YsNt[7tgpPI($2JI.DZ.K[#;UWl\>5;3[`OT:NOKjSc7(9DGcbbU^eb=EE#t/kdpSsqP\Y!#-5>25`Q8>,jC&p#AuE-A&74*;5hQ<+#\kghUsFKsU2DlJZ)MShYg)pNfs8lYd%/hO0X*qH#u>GTa,M)s+OtH6bV[+(,IDjG0Wq[u?@G7RYK6&WfueG('27o!b7%WQUJu*Td*9@N?pHe>"[WM^7BMuW#ZXPu'eJ$0;WTK1gIJjpc;[J8W2htJ.O/kT]IseM\CG4)BS8)L'4<oE2Cp\Fs0Z^(D"EF!h?@V[m7].M9'pZ2%q">2B$ps^%rTV1Mo4f9_s+>13[c#E56s>@OCfCSo\YX)$F`RaW7\S+Zu\=u42!i17Yg_o\o+Y2drl;^2J;aMhe$#2>&ti'[omFFCT'5o@fjP?31Sqi>a6-kfhBnoK-V8RjMah-CB*EY]OD2.cuU739?mu=XHfqF3`9f[aZ@Y/CIeZ\`A8XIeq8P`'ZcQiTNkUt:+g3gb[:ncYS=AWg/>EW_VEK^fS#6*/_DPQUD2WcUYu=)1?)p<guqJSKI(!RL'in@V,/%g8)/'cqUE?3B)&H9^k4]DPU2$nB!c0MfK><o:_f@(!s.SEOF#W:7&bRbP#@rM8@b!BQ!>e@[:_,=CqD)4PffjTkp0A""Z*ejWK,4aIt%*u!<G7m]FOO5KB17+<RJCFR_U'*<Z%SfPQnI)!r<qK:ch#pAk]BqT/>>jl#/2CJ(4NaM!Op]KftHrB$s`THC;&?_nQtef@O@g!Y^o%OE[MI;jT*]2D]p_0IX:[cjFQKPrP_:m5")Em]T`n9VqnQM,Rm*f=f<ilefsF':*hqD0'N_\"U=d?:hgPW:*'HEZ4]_oA/VAiPR3#bT`QoQf$Pe][,?;cnSQm*il)pq^::4T`\L<7?4fS!bTX,m:.-U!Z%$&PSRNL=(kCt@0tKBPPKmNQ$N5eFTYfYjj;H,,@9:X6Ot7XH4%'lT$UE5m'tEk<P93'SjM27&UIi4kjcf;kqFUX=P*V0amj^8FVs^NH69qM(9m2#JaNQF#M/P;m_di2qr(KgnMUY0#$2'e(^m];mB-\-A]eJm>iTOH9q]=;N+K<k0ihu=09b8+1B/,"kl(X)(K]2VZ-($*"oQeS\."!AY[DL0r,N2M>p]!>%tdoV:Btb5N40jh!]4#K?F)BM(t8<5GMs:t&CaEsKh*")O^>!A!72N)]`@hQ(`3_S10k'T5W+F+V<d,(iq!AMg!^PjR>bI"(E.?(G`0u=0%6YDoqr0UEb24uHKM.tC5mpo2p#M$=UWG+R0c:9dep%P&;,YN\J/@f_S8,H\'`t9.5lEkCE<)F]9k^jEO^eLX)6BM"El)p&F=E_fF*tVQE4Di.k"S^"abUg1>9I^g!"maLc9^L\6dr,g3!k[bL*gQe"m<Dkl)]"0SRXTkq<VVP'%Nb^`=?p(ue>Yo](RV_jt0$\QF8C"A6M5&<poT-ju<PQ4.#q/"T#2I-NrE#1H:6j)3Smq&>ZVe"^_'W#(JJ(0q$&Ho)hdFQm,fI?FEZp]C<%otU\a/LVs45"e?V+abtl0mQU_\8Q?n"(Vi'Dj"YSnd;u<QM/m$_)X:B</d3&@0g;8MT*Y1bZrsIHsc!+Po^8#s3Zg+i?t#Hn6/nAWpX95LA*1$iuWn"i_7"MO7D-6"LF#j&HSWZo*'Jn^jkPlrA38@>r85IY>'=W4o,el]kn6K`UKo&LX.(u]9,9\IEND$cJhhrhgo-jaicR0epbX=?YrUa%%oQ.$NFnV_scF9TL+dU_UnS3pk@CEs!1N5@OZk>_^o4i=F(,'YPALHFot<JbM-nW5s>\9XBMM9m!426P^knmOB"ogSgQf&qL3]!D7m/(puhEE>cBVN=E<Un3bUhXD#YKSJr(6LQ5hrW53_qZL)"60HVN&8TNGTHMd).J+HB?.Zpa^hg<JeRi(nf<;pBed,9dJYJ^'7bG8F&C$\nuT:CunF1NGt*G'EO7"M'4rk'ed;rZpW$?euB/op^?Y%[31rgq6d7MP;?LX3efVYR&;@cD&Na$9j0)Hk/+,*dmq\J?DF.2Z<a(l#A-~>endstream
Gau`VD0+2b&H88.Tml3e1.=aGHEims"+>ku?@'.,%"h.*U`mAsKE*Tt;gs'pnl`8Gp0FbNA.B=.>-1i+I3,M$9.&jMI<g(SfFKc]q\R@"Yh:fZ'j#4[_1%uX]j6hC8QB^]92dSTQ7L<ImAQH]"'0-UV,:81`hC+25@,S*13@$Ym"DqM-;2qoB\*8-Ea&N?rTp_Ag@\&D0m1H2Y5$BZ[p3o+geM+Z+%0QA$Wm>\Q@F'SJ^R%'#[;ku$B9@4$#/Tm4TCGd?F&6YFt9tW>VMjYT,XTg<pS2ETjL(++@(C-!`1-%=;kTU`jO/^!=O?S>W86(h5-SMmjb"jPXQHqPuOs]N)p3Rg`CJB<+p+p&DW7gKa<C!J)uOi=1iLkqk3=^h,:9";r-:'k&^B7-PZupG@RcspSU*Bdr"PrcmEFU&8$r"SZNIJk6eVo.7/?<]5EY;mK@fRf1/o00TKi4Xeg'X4bPf>M*Hcn=V[*d&lj.E[Ge!9;DKpe#V:\I.CB7lQj(niYTt/%4$R3#DN[olS'/kc=u'dR1;$Ra>1-Mf;]#k;dXkM2BVdAU)07X$Wtek&'3V#1'eAt*dq'_p["pMk`rR_fQ6orSot1S1W!bM*4BI0;i$N1>aUPd.5V8s?O-(BVWRYB"QAjp=!-4&B5*Aqb4_,$7R[(3OJ.1S99bn/#7ds=>D"f?o5o3o6*<]8@W6DWcQ;M@s"f&kpP'eo#Y,'LMCsG/jCj6^(7O?:pCdM!<'NX?7eMC?@LSmot5hLD0fJ)bOBMRR=AG&Sg'3ITV&ngi7BlH_>?oXf8Xg>YOed_oVE@%`Xror,6RgK,sYO@2llsV_.dC(=Oo8H,4ItN&$emDEJ$Wgi2lrcYNr,N[[R4'&06)JRO(R/tl`Bb)aQUib9Il#FE&fW5i]FbOVhO$FPs1L6L&aA[E<ued1D+O(QQIan'[I6JWEY@I,e(GQPOfLoY[0V*9/rmP`q,"FsU19aV11j,@pQ*)`O7lgr'IE$<$%trU2id)V-*X%JVUPp_-:<.P/#?&W?.i#<>hLKc?<*5s,jE[me.Z0X.]GpuV4LBHY(q>oN#bDOIG&roojmpm'%@$DWM_JJc\><@j'Vt>PG8Y7l7pk7ksGIBBu%/i"#Br>#$B?0gRG1GGJgR3ib^!g`)QjJ`W@a@]'BB#T!=M4QaBu3,g]pZ`Y)Rp(s@$e,qu49@n_9LjdfF$MLCT?"hm@Z.EsI?$LK.d(.;hYCUncq#eNX&jB?rbWu&nSCu_MLMsNj-rZ2a0HHE"k'79%>F+-E.JbCf-%MpkgMr[Q"SA0$\EpL#QU%=]'gDJj4FEksZ10'`UPC?Vhm`Gdo,M,;EpPXJ\S6l!HiG7uaK]M*6p=s9hdWQ7)Q!STfa:8a[V04Bbb[)TdiCH#Q1i<JdFa0t)C3-Nsc";70,&OXqWF'7QpTX:o!bHRL,dBbX+GjYjo+E$tUH'mOQN#a5FF<.jDg1m(f=(7*\3&rYnlq<U2)"XeCn8;k'Q?kTLd]l8cXNZY-,2S"W0aT?L_H$Ik(n/QhXm_LHT1YB.!Ua+>-%e;<`]QM2%o8D`a)7&P%Q:Y?B,29]t^qo%HDQm?@]t(bXC80mPFh<<H=Eg>6]%Bi=C0,CV>UerYf%glDMf*G9$dA*LC]Ohlq>bgjSP?DuK&Q:nkHd;!O19bV\`k<o?)EBq$]5(uD_,f1eWk?RN(a2guofn(1d$#2ts6d7_8PNeV&8/cEB[f8^ZMn=,*+3W`N9WBi7af;t,I6j+T8^4b2j[epNRQ2i03B5^t3D0+g$qIr]jmV#>4)%"Kp)P!k%<#JPGX&4_B\[ed1D6=H,AgG%\CqGuZ2p5/O3UJ0<R.gXS_0&.gU1"V`H&hePa8b;FSA:]E2V@q)[Cn?lkcNOBUZ5'&`0XYVquS@3F7b+HB7l=9\d(JfV\FrNkM6Q[D\-,sl>m>A.<VlBML'@\PVp70\3g4>qnhUng[Rb_Zb8@e*5Bo$QYYBN"c@Y5d(fF`KUlK%3,8._pc.4X^2S;*YM%E,M0=SD*fH=l94U;Mqm`>"j_dGN::bYYTaK7L(gE7sUGB9_8J<%IW1mQ`G>/7>`+h050MjQp)cLeuLEs:1fu-mGRog1*H.0@8NjU:>L7#"O2bj6]kbAiL(N*6$C=b+h71a]:;bU==4lp@:,5kcWad3C:de`[9R"&@o&`0VplPFcR]DL"$2FBBLNV_"m,U6drX,>1/=PT#+[^F+.K^K>P:tX'W>OV>SUI>4@DAKCLl:<-g-mA^ICufrl[jJ"d(Aj6Sd&Y/000]s1@fj+45FK'i8H~>endstream
endobj
xref
0 9
@@ -77,7 +77,7 @@ xref
trailer
<<
/ID
[<e1e46c8f2a916049ff773458531b69dd><e1e46c8f2a916049ff773458531b69dd>]
[<3d22dd34981c7eff4009fb12bd7de53c><3d22dd34981c7eff4009fb12bd7de53c>]
% ReportLab generated PDF document -- digest (opensource)
/Info 6 0 R
@@ -85,5 +85,5 @@ trailer
/Size 9
>>
startxref
4097
4235
%%EOF