feat: add CAN board test tool and timing safeguards

This commit is contained in:
shenlefengnai-rgb
2026-10-01 17:43:28 +08:00
parent be4f167b83
commit 34627fa6a0
14 changed files with 607 additions and 44 deletions
+88
View File
@@ -0,0 +1,88 @@
VERSION "1.1"
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: SDC_ACQ_DAC VehicleController
BO_ 1696 SDC_Heartbeat: 8 SDC_ACQ_DAC
SG_ Board_Identifier : 0|8@1+ (1,0) [0|255] "" VehicleController
SG_ Protocol_Version : 8|8@1+ (1,0) [0|255] "" VehicleController
SG_ Heartbeat_Sequence : 16|16@1+ (1,0) [0|65535] "" VehicleController
SG_ Uptime : 32|32@1+ (0.001,0) [0|4294967.295] "s" VehicleController
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_ 1699 SDC_DAC_Set: 3 VehicleController
SG_ DAC_Select : 0|8@1+ (1,0) [1|2] "" SDC_ACQ_DAC
SG_ DAC_Command_Voltage : 8|16@1+ (0.001,0) [0|5] "V" SDC_ACQ_DAC
BO_ 1700 SDC_DAC_Ack: 4 SDC_ACQ_DAC
SG_ DAC_Set_Result : 0|8@1+ (1,0) [0|1] "" VehicleController
SG_ DAC_Select : 8|8@1+ (1,0) [1|2] "" VehicleController
SG_ DAC_Output_Voltage : 16|16@1+ (0.001,0) [0|5] "V" VehicleController
BO_ 1701 ASSI_Lamp_Set: 1 VehicleController
SG_ ASSI_State : 0|8@1+ (1,0) [0|4] "" SDC_ACQ_DAC
BO_ 1702 SDC_GPIO_Status: 8 SDC_ACQ_DAC
SG_ SDC_Input_State : 0|15@1+ (1,0) [0|32767] "" VehicleController
SG_ SDC_Changed_Mask : 16|15@1+ (1,0) [0|32767] "" VehicleController
SG_ Timestamp : 32|32@1+ (0.001,0) [0|4294967.295] "s" VehicleController
VAL_ 1696 Board_Identifier 161 "A11_F407" ;
VAL_ 1699 DAC_Select 1 "DAC1" 2 "DAC2" ;
VAL_ 1700 DAC_Set_Result 0 "Failed" 1 "OK" ;
VAL_ 1700 DAC_Select 1 "DAC1" 2 "DAC2" ;
VAL_ 1701 ASSI_State 0 "AS_OFF" 1 "AS_READY" 2 "AS_DRIVING" 3 "AS_EMERGENCY" 4 "AS_FINISHED" ;
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_ 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_ 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_ 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.";
+5 -5
View File
@@ -47,7 +47,7 @@ endobj
endobj
6 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20260918211423+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260918211423+08'00') /Producer (ReportLab PDF Library - \(opensource\))
/Author (\(anonymous\)) /CreationDate (D:20260922213520+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260922213520+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 2111
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2151
>>
stream
Gb!;fh/h((&:`#5Tg!Re16%B=ojKYo"7u]ZKS7Mh@60e&L5&MI+XA`F*r+L%P0]<QZgZ0h,jhBBQ?KZ>Xn:@RY>6o>J'tgP:)LT+A(Q3m9EL\HB2W`gB%u\8fuDbU3Tj?Ff<R4ZdpT]f%5a-e>Ss\;1G4Zm_CuIBs87+oABM-8@C$VN!gkOp&tn%^JB2R.5kNa%$e3En#VgJH:TjN@2-[5o'tP(14:Nj(^qu9Wg[Sd/'e"K0JZok[XO*p/Q&p_]il1Y.p6*\'Z)ptQ1;SYCqTL'>[p#-D%/gT$"pV@H'S%)>a3k5t0Wp*^$<XNrijuBokoSYpGZ+pfTe+?"WeA%<ZX4RYEIGnR:nb:^5]@b2)A*n6s2m3SY5-6umt.p)HDXYMV0]].q_./?4/l&DKC@s^n`b/arcHar*OH.$mtHs87'dW&q-9WEF@8Zp\F7^Vk=4D(H@9al$2]OiDCss+D@ke^-h\NDAlVB.8lXVVeqTY,9$+m&^p"L_V_jH8AJRhF^lie9m/2Z&^ICQGhjd1PU;_ascGN:$V'Utp2MIi_<*IYK%("G%P!Sa1XH6\UQ%CSuaAp2O\ZgHWhJ&+u&0;(\i3G2mda[G(r(n2GkknZp[Xsts"XH$;p].^T\/B4&]M5L7$[9]pNeSNGVD@4nUm4C[WC%0?b#p#U#'J?C$OTHMGU[aCH'I6[$a>6f!\#X!Am/V9WH?^C;IE$d^6K+.;JB6VB&:pOHS65#8u=3(KVIBQXNX\EkHN7'SNa1V@HUsl_gKuW3OumcCL%9A?jUgGN7$r`K38ff_\Y@443J"?mGN[^Y,&JS5J/rTV?2;+fCqW<HPfaWUb0.CH-0U<kpDn9]Defs$=&RB1#uY/0I@EemsV&fJJXP]/A:gI1fhK,jM#D,/!K0^\&'Z#E4HpQ#M-YTRRVBMjdIFG]FEQLp/:235^aG(PEWfV1sH@3=la<5=NuHS[Yt$#9KmR3.C69S8K$!Oo=N%-pn7eV$q61;2$2b-eEnJ!VMl7s99"OL-V6r(kRQ]J'g:5GPYKiOO'YgoFHZYT*'F<*0%8FnZ+_P`];tHZH-.>-RYD;g4^Z[)Y+Kf@:Ejc1ojld"%G(^B>u.4hT+7VYO+RlA:6+2sWQ/+NV=t#7VZGQ/)jgX[2o(kGgqB?6H9]%H7D,`*RXe$6)N4i'VKQ#CZohp'$tu';rAl[I;<Ha;NA,ks^nc.?T5n-C<$3iAR:S88!XhH,aKNS`dAI)=L4JJ%qK,QScrfUY&<ks3`[53B1M5(?gL1J)(#EeIM/^LtE6hL$"kl&Jm\#$s$V$mS:KO@d:.+$-l.W6\5-$s%4VR@Va;Dj>VD6\Q2i`W:ShBuB5OR1FkGI\3M5RfACWtZ48KOp.C1-bWCdGGRcOVN,d7H1f8o3Rspp9"c<gSV<2%lOLb$@RqcI3Lb0?<(YIV#h)D<#a#MYOFjQ\ZT6C8P:gJ>sLseN@+AT_b&X.3;F;;\=^j"2:m[\tHb$5V)PaB%pZ!4</8<k2'bD\#VcNiY"PV7tNKp\LRuTH+Hm?9,Z&pL)`lG%?3#tZa2SSG.'3eQCpN'Am09c36KWfbgWD<FoU^mA&rqVl5S@W9FZm$72+;tL^62A6D4mH*WONg`;g4^fpc#ilm0QXZZO_A%;3U1gL>+S7M(5MB8]WDR(9f/n9p_4-8Q:ks.`1bk-pN%b0gtkWpYthLA*`']cMhLi_@(NNlc5P(e#6_*W`"gdffuI^ji9_re5)`k7nj*Hds`,O"NWH<T7CcEj&Yqp];Y'9(Ls3l<*[>h<N&-4$)B^`>Uc3YOqk<%;sPph.C!?J+X'<]fR/Q2>]I_2F!%jJmJ+.RsL62'1=T,>)Y&!!C?.[H]-srJY\Ij>rRifSHX"6C"a9d2$=;(!qdI`.bY$j2$?IZh^i]=p/b"CjuI<NC0g]B7h2(\#D9[Wh)n1W$ETBJaJ%)0-UU+bE.Y0k.nfgL=p0ShFMsCOdO7V$'ZoO\*PPbYJ*U/j`Va@%(fAp(f_fu(\,0XeH$PLr)amsP-I-k@IAr84-eBgDmC/q3hlb`SMEBJ9ITp0O_k]^*5Aq=/U?IF,+uJhR,DJ/BhP@6p'UfRsEZ]VX532S;J3HcE2Z<`&/6i#~>endstream
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
endobj
xref
0 9
@@ -77,7 +77,7 @@ xref
trailer
<<
/ID
[<0c601b021e0ca62988154610c4965733><0c601b021e0ca62988154610c4965733>]
[<e1e46c8f2a916049ff773458531b69dd><e1e46c8f2a916049ff773458531b69dd>]
% ReportLab generated PDF document -- digest (opensource)
/Info 6 0 R
@@ -85,5 +85,5 @@ trailer
/Size 9
>>
startxref
4057
4097
%%EOF