i2c_master.h 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: i2c_master.h
  4. Partner Filename: i2c_master.c
  5. Description: The header file of i2c_master.c
  6. Complier: IAR Embedded Workbench for ARM 6.50, IAR Systems.
  7. CPU TYPE : STM32F30x
  8. *************************************************************************
  9. Copyright (c) 2014 Welling Motor Technology(Shanghai) Co. Ltd.
  10. All rights reserved.
  11. *************************************************************************
  12. *************************************************************************
  13. Revising History (ECL of this file):
  14. liyue create this file;
  15. ************************************************************************/
  16. /************************************************************************
  17. Beginning of File, do not put anything above here except notes
  18. Compiler Directives
  19. ************************************************************************/
  20. #ifndef I2C_MASTER_H
  21. #define I2C_MASTER_H
  22. #include "AssistCurve.h"
  23. #include "bikespeed.h"
  24. #include "Cadence.h"
  25. #include "CadAssist.h"
  26. #include "bikeinformation.h"
  27. #include "typedefine.h"
  28. /************************************************************************
  29. Compiler Directives (N/A)
  30. *************************************************************************/
  31. #ifdef _I2C_MASTER_C_
  32. #define _I2C_MASTER_EXT
  33. #else
  34. #define _I2C_MASTER_EXT extern
  35. #endif
  36. /************************************************************************
  37. Definitions & Macros
  38. *************************************************************************/
  39. //////////////////////// EE Configure ////////////////////////////////////////////
  40. #define I2C_EE_SIZE_NBYTES 1024 // 24C08: 8Kb,16Bytes/Page/64Page
  41. #define I2C_EE_PAGESIZE_NBYTES 16
  42. #define I2C_EE_SIZE_NBLOCKS EEPROM_SIZE_NBYTES / 256
  43. #define I2C_EE_SIZE_NPAGES EEPROM_SIZE_NBYTES / I2C_EE_PAGESIZE
  44. #define I2C_SLAVEADDR_BLOCK1 0x00A0 // First 256 Bytes:0xA0, Second 256 Bytes:0xA2,...0xA4,0xA6
  45. #define I2C_SLAVEADDR_BLOCK2 0x00A2 // SADD[7:1]: 7-bit slave address to be sent.
  46. #define I2C_SLAVEADDR_BLOCK3 0x00A4
  47. #define I2C_SLAVEADDR_BLOCK4 0x00A6
  48. ////////////////////// SIZE OF DATA /////////////////////////////////////////////
  49. #define I2C_MOTOR_PARA_N_BYTES 38 // I2C_SLAVEADDR_BLOCK1
  50. #define I2C_BIKE_PARA_N_BYTES 26 // I2C_SLAVEADDR_BLOCK1
  51. #define I2C_MCONTROL_PARA_N_BYTES 36 // I2C_SLAVEADDR_BLOCK1
  52. #define I2C_SENSOR_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
  53. #define I2C_ASSIST_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
  54. #define I2C_HISTORY_PARA_N_BYTES 78 // I2C_SLAVEADDR_BLOCK3
  55. #define I2C_MOTOR_PARA_N_WORDS I2C_MOTOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  56. #define I2C_BIKE_PARA_N_WORDS I2C_BIKE_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  57. #define I2C_MCONTROL_PARA_N_WORDS I2C_MCONTROL_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  58. #define I2C_SENSOR_PARA_N_WORDS I2C_SENSOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  59. #define I2C_ASSIST_PARA_N_WORDS I2C_ASSIST_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  60. #define I2C_HISTORY_PARA_N_WORDS I2C_HISTORY_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK2
  61. ////////////////////// DATA ADDRESS ////////////////////////////////////////////
  62. #define I2C_PBUFFER_NWORDS 5
  63. #define I2C_MOTOR_PARA_ARDDR 0X00
  64. #define I2C_BIKE_PARA_ARDDR I2C_MOTOR_PARA_ARDDR + I2C_MOTOR_PARA_N_BYTES
  65. #define I2C_MCONTROL_PARA_ARDDR I2C_BIKE_PARA_ARDDR + I2C_BIKE_PARA_N_BYTES
  66. #define I2C_SENSOR_PARA_ARDDR I2C_MCONTROL_PARA_ARDDR + I2C_MCONTROL_PARA_N_BYTES
  67. #define I2C_ASSIST_PARA_ARDDR I2C_SENSOR_PARA_ARDDR + I2C_SENSOR_PARA_N_BYTES
  68. #define I2C_HISTORY_PARA_ARDDR 0x00
  69. #define I2C_MOTOR_PARA_CRC_ARDDR I2C_ASSIST_PARA_ARDDR + I2C_ASSIST_PARA_N_BYTES
  70. #define I2C_BIKE_PARA_CRC_ARDDR I2C_MOTOR_PARA_CRC_ARDDR + 2
  71. #define I2C_MCONTROL_PARA_CRC_ARDDR I2C_BIKE_PARA_CRC_ARDDR + 2
  72. #define I2C_SENSOR_PARA_CRC_ARDDR I2C_MCONTROL_PARA_CRC_ARDDR + 2
  73. #define I2C_ASSIST_PARA_CRC_ARDDR I2C_SENSOR_PARA_CRC_ARDDR + 2
  74. #define I2C_HISTORY_PARA_CRC_ARDDR I2C_HISTORY_PARA_ARDDR + I2C_HISTORY_PARA_N_BYTES
  75. // I2C_TX_NBYTES cannot exceed 255, CRC:6 Bytes
  76. #define I2C_TX1_NBYTES \
  77. 10 + I2C_MOTOR_PARA_N_BYTES + I2C_BIKE_PARA_N_BYTES + I2C_MCONTROL_PARA_N_BYTES + I2C_SENSOR_PARA_N_BYTES + I2C_ASSIST_PARA_N_BYTES // 172 bytes
  78. #define I2C_RETX1_TIMES 1
  79. #define I2C_TX2_NBYTES 2 + I2C_HISTORY_PARA_N_BYTES // 78 Bytes
  80. #define I2C_RETX2_TIMES 1
  81. #define I2C1_TX_DMA_NUM (I2C_TX1_NBYTES > I2C_TX2_NBYTES ? I2C_TX1_NBYTES : I2C_TX2_NBYTES)
  82. // I2C_RX_NBYTES cannot exceed 255,
  83. #define I2C_RX1_NBYTES I2C_TX1_NBYTES
  84. #define I2C_RX2_NBYTES I2C_TX2_NBYTES
  85. #define I2C1_RX_DMA_NUM (I2C_RX1_NBYTES > I2C_RX2_NBYTES ? I2C_RX1_NBYTES : I2C_RX2_NBYTES)
  86. #define I2C_RERX1_TIMES 2
  87. #define I2C_SHORT_TIMEOUT 5000
  88. #define I2C_LONG_TIMEOUT (10 * I2C_FLAG_TIMEOUT)
  89. #define I2C_DMA_TIMEOUT 100000
  90. /************************************************************************
  91. System Parameters
  92. *************************************************************************/
  93. /*Reserve Para*/
  94. #define I2Creserve \
  95. { \
  96. 500 \
  97. }
  98. #define I2CReserve_Byte \
  99. { \
  100. 0 \
  101. }
  102. /*Motor Para*/
  103. #define I2CuwPolePairs \
  104. { \
  105. ((UWORD)M_POLE_PAIRS) \
  106. }
  107. #define I2CuwRsmOhm \
  108. { \
  109. ((UWORD)M_RS_OHM) \
  110. }
  111. #define I2CuwLduH \
  112. { \
  113. ((UWORD)M_LD_NOLOAD_MH) \
  114. }
  115. #define I2CuwLquH \
  116. { \
  117. ((UWORD)M_LQ_NOLOAD_MH) \
  118. }
  119. #define I2CuwFluxmWb \
  120. { \
  121. ((UWORD)M_FLUX_WB) \
  122. }
  123. #define I2CuwIdMaxA \
  124. { \
  125. ((UWORD)M_ID_MAX_AP) \
  126. }
  127. #define I2CuwIdMinA \
  128. { \
  129. ((UWORD)M_ID_MIN_AP) \
  130. }
  131. #define I2CuwRSpdRpm \
  132. { \
  133. ((UWORD)M_R_SPD_RPM) \
  134. }
  135. #define I2CuwRPwrWt \
  136. { \
  137. ((UWORD)M_R_PWR_WT) \
  138. }
  139. #define I2CuwRCurA \
  140. { \
  141. ((UWORD)M_R_IRMS_A) \
  142. }
  143. #define I2CuwRVolV \
  144. { \
  145. ((UWORD)M_R_UDC_v) \
  146. }
  147. #define I2CuwJD \
  148. { \
  149. ((UWORD)M_JD) \
  150. }
  151. #define I2CuwTorMaxNm \
  152. { \
  153. ((UWORD)M_MAX_TOR_NM) \
  154. }
  155. #define I2CMotorPara \
  156. { \
  157. I2CuwPolePairs, I2CuwRsmOhm, I2CuwLduH, I2CuwLquH, I2CuwFluxmWb, I2CuwIdMaxA, I2CuwIdMinA, I2CuwRSpdRpm, I2CuwRPwrWt, I2CuwRCurA, \
  158. I2CuwRVolV, I2CuwJD, I2CuwTorMaxNm, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve \
  159. }
  160. /*Bike Para*/
  161. #define I2CuwWheelDiameter \
  162. { \
  163. ((UWORD)ASS_BIKE_WHEEL_DIAMETER) \
  164. }
  165. #define I2CuwDeltDiameter \
  166. { \
  167. 0 \
  168. }
  169. #define I2CuwMechRationMotor \
  170. { \
  171. ((UWORD)ASS_BIKE_MECH_RATION) \
  172. }
  173. #define I2CuwAssistMaxSpdKmH \
  174. { \
  175. ((UWORD)(ASS_THROTTLE_SPD_LIMIT>>4)) \
  176. }
  177. #define I2CuwThrottleMaxSpdKmH \
  178. { \
  179. ((UWORD)(ASS_CART_SPEED>>4)) \
  180. }
  181. #define I2CuwNmFrontChainring \
  182. { \
  183. BIKE_FRONTTEETH_NMB \
  184. }
  185. #define I2CuwNmBackChainring \
  186. { \
  187. BIKE_BACKTEETH_NMB \
  188. }
  189. #define I2CuwAssistSelect1 \
  190. { \
  191. ((UWORD)ASSISTMOD_SELECT_MODE1) \
  192. }
  193. #define I2CuwAssistSelect2 \
  194. { \
  195. ((UWORD)ASSISTMOD_SELECT_MODE2) \
  196. }
  197. #define I2CuwLightVoltage \
  198. { \
  199. ((UWORD)BIKE_LIGHT_CONFIG) \
  200. }
  201. #define I2CuwStartMode \
  202. { \
  203. ((UWORD)BIKE_START_MODE) \
  204. }
  205. #define I2CuwAutoPowerOffTime \
  206. { \
  207. ((UWORD)BIKE_AUTO_POWER_OFF_TIME) \
  208. }
  209. #define I2CBikePara \
  210. { \
  211. I2CuwWheelDiameter, I2CuwDeltDiameter, I2CuwMechRationMotor, I2CuwAssistMaxSpdKmH, I2CuwThrottleMaxSpdKmH, I2CuwNmFrontChainring, \
  212. I2CuwNmBackChainring, I2CuwAssistSelect1, I2CuwAssistSelect2, I2CuwLightVoltage, I2CuwStartMode, I2CuwAutoPowerOffTime, I2Creserve \
  213. }
  214. /*MControl Para*/
  215. #define I2CParaFirstSetFlg \
  216. { \
  217. 1 \
  218. }
  219. #define I2CSpiOffsetFirstSetFlg \
  220. { \
  221. 0 \
  222. }
  223. #define I2CswSPIPosOffsetOrigin \
  224. { \
  225. 0 \
  226. }
  227. #define I2CswSPIPosOffsetNow \
  228. { \
  229. 0 \
  230. }
  231. #define I2CuwIPeakMaxA \
  232. { \
  233. ((UWORD)M_IS_PEAK_MAX_AP) \
  234. }
  235. #define I2CuwAlamOCurA \
  236. { \
  237. ((UWORD)ALM_OVR_CNT_VAL) \
  238. }
  239. #define I2CuwAlamOVolV \
  240. { \
  241. ((UWORD)ALM_OVR_VLT_LVL1_VAL) \
  242. }
  243. #define I2CuwAlamUVolV \
  244. { \
  245. ((UWORD)ALM_UNDR_VLT_LVL1_VAL) \
  246. }
  247. #define I2CuwAlamOverSpdRpm \
  248. { \
  249. ((UWORD)ALM_OVR_SPD_VAL) \
  250. }
  251. #define I2CuwAlamOverHeatCe \
  252. { \
  253. ((UWORD)ALM_IPM_OVR_HEAT_VAL) \
  254. }
  255. #define I2CuwAlamRecHeatCe \
  256. { \
  257. ((UWORD)ALM_IPM_OVR_HEAT_REC_VAL) \
  258. }
  259. #define I2CuwPwrLimitStartCe \
  260. { \
  261. ((UWORD)PWRLIM_START_THRESHOLD_TEMP) \
  262. }
  263. #define I2CuwAlamMotorOverHeatCe \
  264. { \
  265. ((UWORD)ALM_MOTOR_OVR_HEAT_VAL) \
  266. }
  267. #define I2CuwAlamMotorRecHeatCe \
  268. { \
  269. ((UWORD)ALM_MOTOR_OVR_HEAT_REC_VAL) \
  270. }
  271. #define I2CuwPwrLimitMotorStartCe \
  272. { \
  273. ((UWORD)PWRLIM_START_THRESHOLD_MOTOR_TEMP) \
  274. }
  275. #define I2CuwCONTROLFUNCRUISE \
  276. { \
  277. ((UWORD)IPM_FUN_EN) \
  278. }
  279. #define I2CMControlPara \
  280. { \
  281. I2CParaFirstSetFlg,I2CSpiOffsetFirstSetFlg,I2CswSPIPosOffsetOrigin, I2CswSPIPosOffsetNow, I2CuwIPeakMaxA, I2CuwAlamOCurA, I2CuwAlamOVolV, I2CuwAlamUVolV, I2CuwAlamOverSpdRpm, \
  282. I2CuwAlamOverHeatCe, I2CuwAlamRecHeatCe, I2CuwPwrLimitStartCe, I2CuwAlamMotorOverHeatCe, I2CuwAlamMotorRecHeatCe, I2CuwPwrLimitMotorStartCe, I2CuwCONTROLFUNCRUISE, I2Creserve, I2Creserve \
  283. }
  284. /*Sensor Para*/
  285. #define I2CuwTorSensorOffsetOrigin \
  286. { \
  287. 372 \
  288. }
  289. #define I2CuwTorSensorOffsetNow1 \
  290. { \
  291. 0 \
  292. }
  293. #define I2CuwTorSensorOffsetNow2 \
  294. { \
  295. 0 \
  296. }
  297. #define I2CuwTorSensorOffsetNow3 \
  298. { \
  299. 0 \
  300. }
  301. #define I2CuwTorSensorOffsetNow4 \
  302. { \
  303. 0 \
  304. }
  305. #define I2CuwBikeTorMaxNm \
  306. { \
  307. 850 \
  308. }
  309. #define I2CuwBikeTor1StepRealNm \
  310. { \
  311. 200 \
  312. }
  313. #define I2CuwBikeTor1StepADC \
  314. { \
  315. 838 \
  316. }
  317. #define I2CuwBikeTor2StepRealNm \
  318. { \
  319. 400 \
  320. }
  321. #define I2CuwBikeTor2StepADC \
  322. { \
  323. 1303 \
  324. }
  325. #define I2CuwBikeTor3StepRealNm \
  326. { \
  327. 600 \
  328. }
  329. #define I2CuwBikeTor3StepADC \
  330. { \
  331. 1769 \
  332. }
  333. #define I2CuwBikeTor4StepRealNm \
  334. { \
  335. 800 \
  336. }
  337. #define I2CuwBikeTor4StepADC \
  338. { \
  339. 2234 \
  340. }
  341. #define I2CuwCadSensorPulseNm \
  342. { \
  343. TORQUE_NUMBERS_PULSES \
  344. }
  345. #define I2CuwBikeSpdSensorPulseNm \
  346. { \
  347. BIKESPEED_NUMBERS_PULSES \
  348. }
  349. #define I2CuwCad_SensorPulseNm \
  350. { \
  351. CADENCE_NUMBERS_PULSES \
  352. }
  353. #define I2CSensorPara \
  354. { \
  355. I2CuwTorSensorOffsetOrigin, I2CuwTorSensorOffsetNow1, I2CuwTorSensorOffsetNow2, I2CuwTorSensorOffsetNow3, I2CuwTorSensorOffsetNow4, \
  356. I2CuwBikeTorMaxNm, I2CuwBikeTor1StepRealNm, I2CuwBikeTor1StepADC, I2CuwBikeTor2StepRealNm, I2CuwBikeTor2StepADC, \
  357. I2CuwBikeTor3StepRealNm, I2CuwBikeTor3StepADC, I2CuwBikeTor4StepRealNm, I2CuwBikeTor4StepADC, I2CuwCadSensorPulseNm, \
  358. I2CuwBikeSpdSensorPulseNm, I2CuwCad_SensorPulseNm, I2Creserve, I2Creserve, I2Creserve \
  359. }
  360. /*Assist Para*/
  361. #define I2CswStartupGain \
  362. { \
  363. 8192 \
  364. }
  365. #define I2CswStartcruiseGain \
  366. { \
  367. 4096 \
  368. }
  369. #define I2CswNmAssistChangeNum \
  370. { \
  371. 0 \
  372. }
  373. #define I2CswG1AssistCoefaH \
  374. { \
  375. 0 \
  376. }
  377. #define I2CswG1AssistCoefaL \
  378. { \
  379. 0 \
  380. }
  381. #define I2CswG1AssistCoefbH \
  382. { \
  383. 0 \
  384. }
  385. #define I2CswG1AssistCoefbL \
  386. { \
  387. 0 \
  388. }
  389. #define I2CswG1AssistCoefcH \
  390. { \
  391. 0 \
  392. }
  393. #define I2CswG1AssistCoefcL \
  394. { \
  395. 0 \
  396. }
  397. #define I2CswG2AssistCoefaH \
  398. { \
  399. 0 \
  400. }
  401. #define I2CswG2AssistCoefaL \
  402. { \
  403. 0 \
  404. }
  405. #define I2CswG2AssistCoefbH \
  406. { \
  407. 0 \
  408. }
  409. #define I2CswG2AssistCoefbL \
  410. { \
  411. 0 \
  412. }
  413. #define I2CswG2AssistCoefcH \
  414. { \
  415. 0 \
  416. }
  417. #define I2CswG2AssistCoefcL \
  418. { \
  419. 0 \
  420. }
  421. #define I2CswG3AssistCoefaH \
  422. { \
  423. 0 \
  424. }
  425. #define I2CswG3AssistCoefaL \
  426. { \
  427. 0 \
  428. }
  429. #define I2CswG3AssistCoefbH \
  430. { \
  431. 0 \
  432. }
  433. #define I2CswG3AssistCoefbL \
  434. { \
  435. 0 \
  436. }
  437. #define I2CswG3AssistCoefcH \
  438. { \
  439. 0 \
  440. }
  441. #define I2CswG3AssistCoefcL \
  442. { \
  443. 0 \
  444. }
  445. #define I2CswG4AssistCoefaH \
  446. { \
  447. 0 \
  448. }
  449. #define I2CswG4AssistCoefaL \
  450. { \
  451. 0 \
  452. }
  453. #define I2CswG4AssistCoefbH \
  454. { \
  455. 0 \
  456. }
  457. #define I2CswG4AssistCoefbL \
  458. { \
  459. 0 \
  460. }
  461. #define I2CswG4AssistCoefcH \
  462. { \
  463. 0 \
  464. }
  465. #define I2CswG4AssistCoefcL \
  466. { \
  467. 0 \
  468. }
  469. #define I2CswG5AssistCoefaH \
  470. { \
  471. 0 \
  472. }
  473. #define I2CswG5AssistCoefaL \
  474. { \
  475. 0 \
  476. }
  477. #define I2CswG5AssistCoefbH \
  478. { \
  479. 0 \
  480. }
  481. #define I2CswG5AssistCoefbL \
  482. { \
  483. 0 \
  484. }
  485. #define I2CswG5AssistCoefcH \
  486. { \
  487. 0 \
  488. }
  489. #define I2CswG5AssistCoefcL \
  490. { \
  491. 0 \
  492. }
  493. #define I2CswCadAssistCoefa \
  494. { \
  495. 0 \
  496. }
  497. #define I2CswCadAssistCoefb \
  498. { \
  499. 0 \
  500. }
  501. #define I2CswCadAssistCoefc \
  502. { \
  503. 0 \
  504. }
  505. #define I2CuwAssistStartNm \
  506. { \
  507. 80 \
  508. }
  509. #define I2CuwAssistStopNm \
  510. { \
  511. 30 \
  512. }
  513. #define I2CuwStartUpGainStep \
  514. { \
  515. 4 \
  516. }
  517. #define I2CuwStartUpCadNm \
  518. { \
  519. VolLimCtrKiStep \
  520. }
  521. #define I2CuwTorLPFCadNm \
  522. { \
  523. 38 \
  524. }
  525. #define I2CuwSpeedAssistSpdRpm \
  526. { \
  527. VolLimCtrKp \
  528. }
  529. #define I2CuwSpeedAssistIMaxA \
  530. { \
  531. VolLimCtrKi \
  532. }
  533. #define I2CuwAssistLimitBikeSpdStart \
  534. { \
  535. BIKE_SPEED_IQLIMIT_THRESHOLD1 \
  536. }
  537. #define I2CuwAssistLimitBikeSpdStop \
  538. { \
  539. BIKE_SPEED_IQLIMIT_THRESHOLD2 \
  540. }
  541. #define I2CuwCadenceAssistWeight \
  542. { \
  543. 50 \
  544. }
  545. #define I2CuwCadenceAssKp \
  546. { \
  547. ASS_PID_KP \
  548. }
  549. #define I2CuwCadenceVolStep \
  550. { \
  551. ASS_VOL_STEP_MAX \
  552. }
  553. #define I2CuwCadenceVolDecStep \
  554. { \
  555. ((UWORD)ASS_VOL_DEC_STEP) \
  556. }
  557. #define I2CuwCadenceCurStep \
  558. { \
  559. ((UWORD)ASS_CUR_STEP) \
  560. }
  561. #define I2CuwCadenceMaxRpm \
  562. { \
  563. ((UWORD)ASS_CAD_MAX_RPM) \
  564. }
  565. #define I2CAssistPara \
  566. { \
  567. I2CswStartupGain, I2CswStartcruiseGain, I2CuwAssistStartNm, I2CuwAssistStopNm, I2CuwStartUpGainStep, I2CuwStartUpCadNm, I2CuwTorLPFCadNm, \
  568. I2CuwSpeedAssistSpdRpm, I2CuwSpeedAssistIMaxA, I2CuwAssistLimitBikeSpdStart, I2CuwAssistLimitBikeSpdStop, I2CuwCadenceAssistWeight, \
  569. I2CuwCadenceAssKp, I2CuwCadenceVolStep, I2CuwCadenceVolDecStep, I2CuwCadenceCurStep, I2CuwCadenceMaxRpm, I2Creserve, I2Creserve, I2Creserve \
  570. }
  571. // I2CswNmAssistChangeNum,
  572. // I2CswG1AssistCoefaH,I2CswG1AssistCoefaL,I2CswG1AssistCoefbH,I2CswG1AssistCoefbL,I2CswG1AssistCoefcH,I2CswG1AssistCoefcL,\
  573. // I2CswG2AssistCoefaH,I2CswG2AssistCoefaL,I2CswG2AssistCoefbH,I2CswG2AssistCoefbL,I2CswG2AssistCoefcH,I2CswG2AssistCoefcL,\
  574. // I2CswG3AssistCoefaH,I2CswG3AssistCoefaL,I2CswG3AssistCoefbH,I2CswG3AssistCoefbL,I2CswG3AssistCoefcH,I2CswG3AssistCoefcL,\
  575. // I2CswG4AssistCoefaH,I2CswG4AssistCoefaL,I2CswG4AssistCoefbH,I2CswG4AssistCoefbL,I2CswG4AssistCoefcH,I2CswG4AssistCoefcL,\
  576. // I2CswG5AssistCoefaH,I2CswG5AssistCoefaL,I2CswG5AssistCoefbH,I2CswG5AssistCoefbL,I2CswG5AssistCoefcH,I2CswG5AssistCoefcL,\
  577. // I2CswCadAssistCoefa,I2CswCadAssistCoefb,I2CswCadAssistCoefc,
  578. /*History Parameters*/
  579. #define I2CuwAssModSelect \
  580. { \
  581. 0 \
  582. }
  583. #define I2CuwOpenTimes \
  584. { \
  585. 0 \
  586. }
  587. #define I2CuwUsedTimeH \
  588. { \
  589. 0 \
  590. }
  591. #define I2CuwUsedTimeL \
  592. { \
  593. 0 \
  594. }
  595. #define I2CuwNTCTempMaxCe \
  596. { \
  597. 0 \
  598. }
  599. #define I2CuwNTCTempMinCe \
  600. { \
  601. 100 \
  602. }
  603. #define I2CuwAlamHOcurTimes \
  604. { \
  605. 0 \
  606. }
  607. #define I2CuwAlamSOcurTimes \
  608. { \
  609. 0 \
  610. }
  611. #define I2CuwAlamOHeatTimes \
  612. { \
  613. 0 \
  614. }
  615. #define I2CuwAlamRotorLockTimes \
  616. { \
  617. 0 \
  618. }
  619. #define I2CuwAlamPhsLossTimes \
  620. { \
  621. 0 \
  622. }
  623. #define I2CuwAlamOVolTimes \
  624. { \
  625. 0 \
  626. }
  627. #define I2CuwAlamUVolTimes \
  628. { \
  629. 0 \
  630. }
  631. #define I2CuwAlamComOTimeTimes \
  632. { \
  633. 0 \
  634. }
  635. #define I2CuwG1AvgPwrConsumption \
  636. { \
  637. 100 \
  638. }
  639. #define I2CuwG2AvgPwrConsumption \
  640. { \
  641. 160 \
  642. }
  643. #define I2CuwG3AvgPwrConsumption \
  644. { \
  645. 190 \
  646. }
  647. #define I2CuwG4AvgPwrConsumption \
  648. { \
  649. 270 \
  650. }
  651. #define I2CuwG5AvgPwrConsumption \
  652. { \
  653. 180 \
  654. }
  655. #define I2CuwODOTripH \
  656. { \
  657. 0 \
  658. }
  659. #define I2CuwODOTripL \
  660. { \
  661. 0 \
  662. }
  663. #define I2CuwODOTimeH \
  664. { \
  665. 0 \
  666. }
  667. #define I2CuwODOTimeL \
  668. { \
  669. 0 \
  670. }
  671. #define I2CuwTripSumH \
  672. { \
  673. 0 \
  674. }
  675. #define I2CuwTripSumL \
  676. { \
  677. 0 \
  678. }
  679. #define I2CuwTripSumTimeH \
  680. { \
  681. 0 \
  682. }
  683. #define I2CuwTripSumTimeL \
  684. { \
  685. 0 \
  686. }
  687. #define I2CuwTorSensorAlamTimes \
  688. { \
  689. 0 \
  690. }
  691. #define I2CuwCadSensorAlamTimes \
  692. { \
  693. 0 \
  694. }
  695. #define I2CuwBikeSpdSensorAlamTimes \
  696. { \
  697. 0 \
  698. }
  699. #define I2CuwPosSensorAlamTimes \
  700. { \
  701. 0 \
  702. }
  703. #define I2CHistoryPara \
  704. { \
  705. I2CuwAssModSelect, I2CuwOpenTimes, I2CuwUsedTimeH, I2CuwUsedTimeL, I2CuwNTCTempMaxCe, I2CuwNTCTempMinCe, I2CuwAlamHOcurTimes, \
  706. I2CuwAlamSOcurTimes, I2CuwAlamOHeatTimes, I2CuwAlamRotorLockTimes, I2CuwAlamPhsLossTimes, I2CuwAlamOVolTimes, I2CuwAlamUVolTimes, \
  707. I2CuwAlamComOTimeTimes, I2CuwG1AvgPwrConsumption, I2CuwG2AvgPwrConsumption, I2CuwG3AvgPwrConsumption, I2CuwG4AvgPwrConsumption, \
  708. I2CuwG5AvgPwrConsumption, I2CuwODOTripH, I2CuwODOTripL, I2CuwODOTimeH, I2CuwODOTimeL, I2CuwTripSumH, I2CuwTripSumL, I2CuwTripSumTimeH, \
  709. I2CuwTripSumTimeL, I2CuwTorSensorAlamTimes, I2CuwCadSensorAlamTimes, I2CuwBikeSpdSensorAlamTimes, I2CuwPosSensorAlamTimes, I2Creserve, \
  710. I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve \
  711. }
  712. /*Ride Params*/
  713. #define I2CucRidePara_AssistRatioGain1 \
  714. { \
  715. 100 \
  716. }
  717. #define I2CucRidePara_AssistAccelerationGain1 \
  718. { \
  719. 100 \
  720. }
  721. #define I2CucRidePara_AssistRatioGain2 \
  722. { \
  723. 100 \
  724. }
  725. #define I2CucRidePara_AssistAccelerationGain2 \
  726. { \
  727. 100 \
  728. }
  729. #define I2CucRidePara_AssistRatioGain3 \
  730. { \
  731. 100 \
  732. }
  733. #define I2CucRidePara_AssistAccelerationGain3 \
  734. { \
  735. 100 \
  736. }
  737. #define I2CucRidePara_AssistRatioGain4 \
  738. { \
  739. 100 \
  740. }
  741. #define I2CucRidePara_AssistAccelerationGain4 \
  742. { \
  743. 100 \
  744. }
  745. #define I2CucRidePara_AssistRatioGain5 \
  746. { \
  747. 100 \
  748. }
  749. #define I2CucRidePara_AssistAccelerationGain5 \
  750. { \
  751. 100 \
  752. }
  753. #define I2CucRidePara_MaxCurrentGain1 \
  754. { \
  755. 100 \
  756. }
  757. #define I2CucRidePara_MaxTorqueGain1 \
  758. { \
  759. 100 \
  760. }
  761. #define I2CucRidePara_MaxCurrentGain2 \
  762. { \
  763. 100 \
  764. }
  765. #define I2CucRidePara_MaxTorqueGain2 \
  766. { \
  767. 100 \
  768. }
  769. #define I2CucRidePara_MaxCurrentGain3 \
  770. { \
  771. 100 \
  772. }
  773. #define I2CucRidePara_MaxTorqueGain3 \
  774. { \
  775. 100 \
  776. }
  777. #define I2CucRidePara_MaxCurrentGain4 \
  778. { \
  779. 100 \
  780. }
  781. #define I2CucRidePara_MaxTorqueGain4 \
  782. { \
  783. 100 \
  784. }
  785. #define I2CucRidePara_MaxCurrentGain5 \
  786. { \
  787. 100 \
  788. }
  789. #define I2CucRidePara_MaxTorqueGain5 \
  790. { \
  791. 100 \
  792. }
  793. #define I2CRidePara \
  794. { \
  795. I2CucRidePara_AssistRatioGain1, I2CucRidePara_AssistAccelerationGain1, I2CucRidePara_AssistRatioGain2, I2CucRidePara_AssistAccelerationGain2, \
  796. I2CucRidePara_AssistRatioGain3, I2CucRidePara_AssistAccelerationGain3, I2CucRidePara_AssistRatioGain4, I2CucRidePara_AssistAccelerationGain4, \
  797. I2CucRidePara_AssistRatioGain5, I2CucRidePara_AssistAccelerationGain5, \
  798. I2CucRidePara_MaxCurrentGain1, I2CucRidePara_MaxTorqueGain1, I2CucRidePara_MaxCurrentGain2, I2CucRidePara_MaxTorqueGain2, \
  799. I2CucRidePara_MaxCurrentGain3, I2CucRidePara_MaxTorqueGain3, I2CucRidePara_MaxCurrentGain4, I2CucRidePara_MaxTorqueGain4, \
  800. I2CucRidePara_MaxCurrentGain5, I2CucRidePara_MaxTorqueGain5, \
  801. I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, \
  802. I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte\
  803. }
  804. /*Ride Params*/
  805. #define I2CucBikePara2_NoneOBCEnable \
  806. { \
  807. BIKE_NONEOBCEBNABLE \
  808. }
  809. #define I2CucBikePara2_RearLightCycle \
  810. { \
  811. BIKE_REARLIGHTCYCLE \
  812. }
  813. #define I2CucBikePara2_RearLightDuty \
  814. { \
  815. BIKE_REARLIGHTDUTY \
  816. }
  817. #define I2CucBikePara2_DeltaBikeSpeedLimit \
  818. { \
  819. BIKE_DELTASPEEDLIMITION \
  820. }
  821. #define I2CBikePara2 \
  822. { \
  823. I2CucBikePara2_NoneOBCEnable, I2CucBikePara2_RearLightCycle, I2CucBikePara2_RearLightDuty, I2CucBikePara2_DeltaBikeSpeedLimit, \
  824. I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, \
  825. I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve \
  826. }
  827. /* SYSTEM2 PARA */
  828. #define SYSPARA2 \
  829. { \
  830. I2CMotorPara, I2CBikePara, I2CMControlPara, I2CSensorPara, I2CAssistPara, I2CHistoryPara, I2CRidePara,I2CBikePara2,0 \
  831. }
  832. /************************************************************************
  833. TypeDefs & Structure defines (N/A)
  834. *************************************************************************/
  835. typedef struct
  836. {
  837. UBYTE ubTX1NPages;
  838. UBYTE ubTX1NSingleBytes;
  839. } I2C_TX_COF;
  840. typedef struct
  841. {
  842. UBYTE ubSlaveAddr;
  843. UBYTE ubPageCnt;
  844. UBYTE ubTX1Cnt;
  845. UBYTE ubWriteAddr;
  846. BOOL blTX1FinishFlg;
  847. BOOL blTX2FinishFlg;
  848. BOOL blInitFinishFlg;
  849. } I2C_TX_OUT;
  850. typedef struct
  851. {
  852. BOOL blMotorParaFltFlg;
  853. BOOL blBikeParaFltFlg;
  854. BOOL blMControlParaFltFlg;
  855. BOOL blSensorParaFltFlg;
  856. BOOL blAssistParaFltFlg;
  857. BOOL blHistoryParaFltFlg;
  858. BOOL blRideParaFltFlg;
  859. BOOL blBikePara2FltFlg;
  860. BOOL ReadFinishFlg;
  861. } I2C_RXCRC_OUT;
  862. typedef struct
  863. {
  864. // UWORD uwDefault1;
  865. UWORD uwReal;
  866. // UWORD uwMin;
  867. // UWORD uwMax;
  868. // UWORD uwUnit;
  869. } UWORD_VALUE;
  870. typedef struct
  871. {
  872. // SWORD swDefault1;
  873. SWORD swReal;
  874. // SWORD swMin;
  875. // SWORD swMax;
  876. // UWORD uwUnit;
  877. } SWORD_VALUE;
  878. typedef struct
  879. {
  880. // UBYTE ucDefault1;
  881. UBYTE ucReal;
  882. // UBYTE ucMin;
  883. // UBYTE ucMax;
  884. // UBYTE ucUnit;
  885. // UBYTE RS;
  886. } UBYTE_VALUE;
  887. typedef struct
  888. {
  889. //SBYTE scDefault1;
  890. SBYTE scReal;
  891. // SBYTE scMin;
  892. // SBYTE scMax;
  893. // UBYTE ucUnit;
  894. // UBYTE RS;
  895. } SBYTE_VALUE;
  896. typedef struct
  897. {
  898. UWORD_VALUE uwPolePairs;
  899. UWORD_VALUE uwRsmOhm;
  900. UWORD_VALUE uwLduH;
  901. UWORD_VALUE uwLquH;
  902. UWORD_VALUE uwFluxmWb;
  903. UWORD_VALUE uwIdMaxA;
  904. UWORD_VALUE uwIdMinA;
  905. UWORD_VALUE uwRSpdRpm;
  906. UWORD_VALUE uwRPwrWt;
  907. UWORD_VALUE uwRCurA;
  908. UWORD_VALUE uwRVolV;
  909. UWORD_VALUE uwJD;
  910. UWORD_VALUE uwTorMaxNm;
  911. UWORD_VALUE uwReserve1;
  912. UWORD_VALUE uwReserve2;
  913. UWORD_VALUE uwReserve3;
  914. UWORD_VALUE uwReserve4;
  915. UWORD_VALUE uwReserve5;
  916. UWORD_VALUE uwRsserve6;
  917. } MOTOR_PARAMETER;
  918. typedef struct
  919. {
  920. UWORD_VALUE uwWheelPerimeter;
  921. SWORD_VALUE swDeltPerimeter;
  922. UWORD_VALUE uwMechRationMotor;
  923. UWORD_VALUE uwThrottleMaxSpdKmH;
  924. UWORD_VALUE uwCartSpdKmH;
  925. UWORD_VALUE uwNmFrontChainring;
  926. UWORD_VALUE uwNmBackChainring;
  927. UWORD_VALUE uwAssistSelect1;
  928. UWORD_VALUE uwAssistSelect2;
  929. UWORD_VALUE uwLightConfig;
  930. UWORD_VALUE uwStartMode;
  931. UWORD_VALUE uwAutoPowerOffTime;
  932. UWORD_VALUE uwReserve4;
  933. } BIKE_PARAMETER;
  934. typedef struct
  935. {
  936. UWORD_VALUE ParaFirstSetFlg;
  937. UWORD_VALUE SpiOffsetFirstSetFlg;
  938. UWORD_VALUE uwSPIPosOffsetOrigin;
  939. UWORD_VALUE uwSPIPosOffsetNow;
  940. UWORD_VALUE uwIPeakMaxA;
  941. UWORD_VALUE uwAlamOCurA;
  942. UWORD_VALUE uwAlamOVolV;
  943. UWORD_VALUE uwAlamUVolV;
  944. UWORD_VALUE uwAlamOverSpdRpm;
  945. UWORD_VALUE uwAlamOverHeatCe;
  946. UWORD_VALUE uwAlamRecHeatCe;
  947. UWORD_VALUE uwPwrLimitStartCe;
  948. UWORD_VALUE uwAlamMotorOverHeatCe;
  949. UWORD_VALUE uwAlamMotorRecHeatCe;
  950. UWORD_VALUE uwPwrLimitMotorStartCe;
  951. UWORD_VALUE uwControlFunEN;
  952. UWORD_VALUE uwReserve1;
  953. UWORD_VALUE uwReserve2;
  954. } MControl_PARAMETER;
  955. typedef struct
  956. {
  957. UWORD_VALUE uwTorSensorOffsetOrigin;
  958. UWORD_VALUE uwTorSensorOffsetNow1;
  959. UWORD_VALUE uwTorSensorOffsetNow2;
  960. UWORD_VALUE uwTorSensorOffsetNow3;
  961. UWORD_VALUE uwTorSensorOffsetNow4;
  962. UWORD_VALUE uwBikeTorMaxNm;
  963. UWORD_VALUE uwBikeTor1StepRealNm;
  964. UWORD_VALUE uwBikeTor1StepADC;
  965. UWORD_VALUE uwBikeTor2StepRealNm;
  966. UWORD_VALUE uwBikeTor2StepADC;
  967. UWORD_VALUE uwBikeTor3StepRealNm;
  968. UWORD_VALUE uwBikeTor3StepADC;
  969. UWORD_VALUE uwBikeTor4StepRealNm;
  970. UWORD_VALUE uwBikeTor4StepADC;
  971. UWORD_VALUE uwTorque_SensorPulseNm;//力矩脉冲
  972. UWORD_VALUE uwBikeSpdSensorPulseNm;
  973. UWORD_VALUE uwCad_SensorPulseNm;//uwCad_SensorPulseNm;
  974. UWORD_VALUE uwReserve2;
  975. UWORD_VALUE uwReserve3;
  976. UWORD_VALUE uwReserve4;
  977. } Sensor_PARAMETER;
  978. typedef struct
  979. {
  980. UWORD_VALUE uwStartupGain;
  981. UWORD_VALUE uwStartcruiseGain;
  982. UWORD_VALUE uwAssistStartNm;
  983. UWORD_VALUE uwAssistStopNm;
  984. UWORD_VALUE uwStartUpGainStep;
  985. UWORD_VALUE uwStartUpCadNm;
  986. UWORD_VALUE uwTorLPFCadNm;
  987. UWORD_VALUE uwSpeedAssistSpdRpm;
  988. UWORD_VALUE uwSpeedAssistIMaxA;
  989. UWORD_VALUE uwAssistLimitBikeSpdStart;
  990. UWORD_VALUE uwAssistLimitBikeSpdStop;
  991. UWORD_VALUE uwCadenceAssistWeight;
  992. UWORD_VALUE uwCadenceAssKp;
  993. SWORD_VALUE swCadenceVolStep;
  994. SWORD_VALUE swCadenceVolDecStep;
  995. SWORD_VALUE swCadenceCurStep;
  996. UWORD_VALUE uwMaxCadRpm;
  997. UWORD_VALUE uwReserve2;
  998. UWORD_VALUE uwReserve3;
  999. UWORD_VALUE uwReserve4;
  1000. } Assist_PARAMETER;
  1001. typedef struct
  1002. {
  1003. UWORD_VALUE uwAssModSelect;
  1004. UWORD_VALUE uwOpenTimes;
  1005. UWORD_VALUE uwUsedTimeH;
  1006. UWORD_VALUE uwUsedTimeL;
  1007. SWORD_VALUE swNTCTempMaxCe;
  1008. SWORD_VALUE swNTCTempMinCe;
  1009. UWORD_VALUE uwAlamHOcurTimes;
  1010. UWORD_VALUE uwAlamSOcurTimes;
  1011. UWORD_VALUE uwAlamOHeatTimes;
  1012. UWORD_VALUE uwAlamRotorLockTimes;
  1013. UWORD_VALUE uwAlamPhsLossTimes;
  1014. UWORD_VALUE uwAlamOVolTimes;
  1015. UWORD_VALUE uwAlamUVolTimes;
  1016. UWORD_VALUE uwAlamComOTimeTimes;
  1017. UWORD_VALUE uwG1AvgPwrConsumption;
  1018. UWORD_VALUE uwG2AvgPwrConsumption;
  1019. UWORD_VALUE uwG3AvgPwrConsumption;
  1020. UWORD_VALUE uwG4AvgPwrConsumption;
  1021. UWORD_VALUE uwG5AvgPwrConsumption;
  1022. UWORD_VALUE uwODOTripH;
  1023. UWORD_VALUE uwODOTripL;
  1024. UWORD_VALUE uwODOTimeH;
  1025. UWORD_VALUE uwODOTimeL;
  1026. UWORD_VALUE uwTripSumH;
  1027. UWORD_VALUE uwTripSumL;
  1028. UWORD_VALUE uwTripSumTimeH;
  1029. UWORD_VALUE uwTripSumTimeL;
  1030. UWORD_VALUE uwTorSensorAlamTimes;
  1031. UWORD_VALUE uwCadSensorAlamTimes;
  1032. UWORD_VALUE uwBikeSpdSensorAlamTimes;
  1033. UWORD_VALUE uwPosSensorAlamTimes;
  1034. UWORD_VALUE uwRealODOTripH;//不可更改
  1035. UWORD_VALUE uwRealODOTripL;
  1036. UWORD_VALUE uwRealODOTimeH;
  1037. UWORD_VALUE uwRealODOTimeL;
  1038. UWORD_VALUE reserve1;
  1039. UWORD_VALUE reserve2;
  1040. UWORD_VALUE reserve3;
  1041. UWORD_VALUE reserve4;
  1042. UWORD uwCRC;
  1043. } History_PARAMETER;
  1044. /**
  1045. * @brief MC生产信息,占用空间32bytes
  1046. *
  1047. */
  1048. typedef struct
  1049. {
  1050. char Manufacturer[8]; ///>生产厂商 ASCII,0x2E结束,无效填充0x20
  1051. char MacAddr[8]; ///>生产地 ASCII,0x2E结束,无效填充0x20
  1052. char MacDate[8]; ///>生产日期 ASCII,0x2E结束,无效填充0x20
  1053. char MacBrand[8];
  1054. } MC_MacInfo_Struct_t;
  1055. /**
  1056. * @brief MC生产信息,占用空间32bytes
  1057. *
  1058. */
  1059. typedef struct
  1060. {
  1061. char CustomASCII1[16]; ///>生产厂商 ASCII,0x2E结束,无效填充0x20
  1062. char CustomASCII2[16]; ///>生产地 ASCII,0x2E结束,无效填充0x20
  1063. char CustomASCII3[16]; ///>生产日期 ASCII,0x2E结束,无效填充0x20
  1064. } MC_RS_ASCII_Struct_t;
  1065. typedef struct
  1066. {
  1067. UWORD uwSaveFlg;
  1068. UWORD uwEEFirstDefaultSetFlg;
  1069. UWORD uwSPIOffsetFirstSetFlg;
  1070. UWORD uwTestParaSaveFlg;
  1071. UWORD RunModelSelect;
  1072. UWORD ThetaGetModelSelect;
  1073. UWORD CurrentSampleModelSelect;
  1074. UWORD RotateDirectionSelect;
  1075. UWORD uwInitPosCurAmp;
  1076. UWORD uwVFControlVolAmp;
  1077. UWORD uwIFControlCurAmp;
  1078. UWORD uwVFIFTargetFreHz;
  1079. UWORD uwSpeedLoopAccRate;
  1080. UWORD uwSpeedLoopDecRate;
  1081. UWORD uwSpeedLoopBandWidthHz;
  1082. UWORD uwSpeedLoopCoefM;
  1083. UWORD uwCuerrentLoopBandWidthHz;
  1084. UWORD uwCurrentLoopCoefM;
  1085. UWORD uwFluxObsBandWidthHz;
  1086. UWORD uwFluxObsCoefM;
  1087. UWORD uwThetaObsPLLBandWidthHz;
  1088. UWORD uwThetaObsPLLCoefM;
  1089. UWORD uwJm;
  1090. UWORD uwPWMMaxDuty;
  1091. UWORD uwPWM7to5Duty;
  1092. UWORD uwPwrLimit;
  1093. UWORD uwPwrLimitError;
  1094. UWORD uwPwrLimitKp;
  1095. UWORD uwPwrLimitKi;
  1096. UWORD reserve1;
  1097. UWORD reserve2;
  1098. UWORD reserve3;
  1099. UWORD reserve4;
  1100. UWORD reserve5;
  1101. UWORD reserve6;
  1102. UWORD reserve7;
  1103. UWORD reserve8;
  1104. } UPC_TestParaInfo_Struct_t;
  1105. // UBYTE ubMotorVersion[16];
  1106. // UBYTE ubSN[16];
  1107. // MC_MacInfo_Struct_t ubProdInfo;
  1108. typedef struct
  1109. {
  1110. SLONG slTorqAssGain[15][4];
  1111. SLONG slCadAssGain[5][4];
  1112. MC_RS_ASCII_Struct_t ubRsASSCII;
  1113. UPC_TestParaInfo_Struct_t stTestParaInfo;
  1114. } FLASH_PARA_TYPE;
  1115. typedef struct
  1116. {
  1117. UWORD uwTEMP_RES0;//0度电阻值
  1118. UWORD uwTEMP_RES1;//25度电阻值
  1119. UWORD uwTEMP_RES2;//50度电阻值
  1120. UWORD uwTEMP_RES3;//75度电阻值
  1121. UWORD uwTEMP_RES4;//100度电阻值
  1122. UWORD uwTEMP_RES5;//125度电阻值
  1123. UWORD uwTEMP_RES6;//150度电阻值
  1124. }EEP_RES_Struct;
  1125. typedef struct
  1126. {
  1127. UBYTE_VALUE ucAssistRatioGain1; //1%
  1128. UBYTE_VALUE ucAssistAccelerationGain1; //1%
  1129. UBYTE_VALUE ucAssistRatioGain2; //1%
  1130. UBYTE_VALUE ucAssistAccelerationGain2; //1%
  1131. UBYTE_VALUE ucAssistRatioGain3; //1%
  1132. UBYTE_VALUE ucAssistAccelerationGain3; //1%
  1133. UBYTE_VALUE ucAssistRatioGain4; //1%
  1134. UBYTE_VALUE ucAssistAccelerationGain4; //1%
  1135. UBYTE_VALUE ucAssistRatioGain5; //1%
  1136. UBYTE_VALUE ucAssistAccelerationGain5; //1%
  1137. UBYTE_VALUE ucMaxCurrentGain1; //1%
  1138. UBYTE_VALUE ucMaxTorqueGain1; //1%
  1139. UBYTE_VALUE ucMaxCurrentGain2; //1%
  1140. UBYTE_VALUE ucMaxTorqueGain2; //1%
  1141. UBYTE_VALUE ucMaxCurrentGain3; //1%
  1142. UBYTE_VALUE ucMaxTorqueGain3; //1%
  1143. UBYTE_VALUE ucMaxCurrentGain4; //1%
  1144. UBYTE_VALUE ucMaxTorqueGain4; //1%
  1145. UBYTE_VALUE ucMaxCurrentGain5; //1%
  1146. UBYTE_VALUE ucMaxTorqueGain5; //1%
  1147. UBYTE_VALUE reserve1;
  1148. UBYTE_VALUE reserve2;
  1149. UBYTE_VALUE reserve3;
  1150. UBYTE_VALUE reserve4;
  1151. UBYTE_VALUE reserve5;
  1152. UBYTE_VALUE reserve6;
  1153. UBYTE_VALUE reserve7;
  1154. UBYTE_VALUE reserve8;
  1155. UBYTE_VALUE reserve9;
  1156. UBYTE_VALUE reserve10;
  1157. UBYTE_VALUE reserve11;
  1158. UBYTE_VALUE reserve12;
  1159. }Ride_PARAMETER;
  1160. typedef struct
  1161. {
  1162. UWORD_VALUE uwNoneOBCEnable;
  1163. UWORD_VALUE uwRearLightCycle;
  1164. UWORD_VALUE uwRearLightDuty;
  1165. SWORD_VALUE swDeltaBikeSpeedLimit;
  1166. UWORD_VALUE reserve1;
  1167. UWORD_VALUE reserve2;
  1168. UWORD_VALUE reserve3;
  1169. UWORD_VALUE reserve4;
  1170. UWORD_VALUE reserve5;
  1171. UWORD_VALUE reserve6;
  1172. UWORD_VALUE reserve7;
  1173. UWORD_VALUE reserve8;
  1174. UWORD_VALUE reserve9;
  1175. UWORD_VALUE reserve10;
  1176. UWORD_VALUE reserve11;
  1177. UWORD_VALUE reserve12;
  1178. } BIKE_PARAMETER2;
  1179. typedef struct
  1180. {
  1181. EEP_RES_Struct EEP_MOSA;//25度下MOS内阻
  1182. EEP_RES_Struct EEP_MOSB;
  1183. EEP_RES_Struct EEP_MOSC;
  1184. UWORD EEP_K50; //系数1
  1185. UWORD EEP_K75;
  1186. UWORD EEP_K100;
  1187. UWORD EEP_K125;
  1188. UWORD EEP_K150;
  1189. UWORD reserve1;
  1190. UWORD reserve2;
  1191. UWORD reserve3;
  1192. UWORD reserve4;
  1193. UWORD reserve5;
  1194. UWORD reserve6;
  1195. UWORD reserve7;
  1196. UWORD reserve8;
  1197. UWORD uwCRC;
  1198. }MOSEEPROM_Struct;
  1199. typedef struct
  1200. {
  1201. MOTOR_PARAMETER stMotorPara;
  1202. BIKE_PARAMETER stBikePara;
  1203. MControl_PARAMETER stMControlPara;
  1204. Sensor_PARAMETER stSensorPara;
  1205. Assist_PARAMETER stAssistPara;
  1206. FLASH_PARA_TYPE flash_stPara;
  1207. MOSEEPROM_Struct EepromMosPara;
  1208. Ride_PARAMETER stRidePara;
  1209. BIKE_PARAMETER2 stBikePara2;
  1210. UWORD uwCRC;
  1211. } SYSTEM_PARAMETER2;
  1212. typedef struct
  1213. {
  1214. UBYTE ubMotorVersion[16];
  1215. UBYTE ubSN[16];
  1216. MC_MacInfo_Struct_t ubProdInfo;
  1217. UBYTE ucProductLabel[32];
  1218. UWORD uwCRC;
  1219. }PRODUCT_INFO_Struct;
  1220. /************************************************************************
  1221. Constant Table
  1222. *************************************************************************/
  1223. extern MC_MacInfo_Struct_t MC_MacInfo;
  1224. extern MC_RS_ASCII_Struct_t MC_RsASSCII;
  1225. /************************************************************************
  1226. Exported Variables
  1227. *************************************************************************/
  1228. #ifdef _I2C_MASTER_C_
  1229. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2 ;//= SYSPARA2;
  1230. _I2C_MASTER_EXT PRODUCT_INFO_Struct Productionpara;
  1231. //_I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1232. //_I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1233. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
  1234. // _I2C_MASTER_EXT MOSEEPROM_Struct EepromMosPara;
  1235. //
  1236. //_I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RERX1_TIMES][I2C1_RX_DMA_NUM];
  1237. //_I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1238. //_I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1239. //_I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1240. //_I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1241. //_I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1242. // _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1243. //_I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1244. //_I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1245. //
  1246. //_I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer = I2C_ubWriteBuffer;
  1247. //_I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer = I2C_ubHistoyWriteBuffer;
  1248. //_I2C_MASTER_EXT UBYTE *I2C_pReadBuffer = I2C_ubReadBuffer[0];
  1249. //
  1250. //_I2C_MASTER_EXT BOOL I2C_TimeOutFlg = FALSE;
  1251. //_I2C_MASTER_EXT BOOL I2C_DMA_TimeOutFlg = FALSE;
  1252. //_I2C_MASTER_EXT BOOL I2C_DMA_FltFlg = FALSE;
  1253. //_I2C_MASTER_EXT UBYTE I2C_TimeOutCnt = 0;
  1254. //_I2C_MASTER_EXT BOOL I2C_EEFltFlg = FALSE;
  1255. #else
  1256. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2;
  1257. _I2C_MASTER_EXT PRODUCT_INFO_Struct Productionpara;
  1258. //_I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1259. //_I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1260. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut;
  1261. // _I2C_MASTER_EXT MOSEEPROM_Struct EepromMosPara;
  1262. //
  1263. //_I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RERX1_TIMES][I2C1_RX_DMA_NUM];
  1264. //_I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1265. //_I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1266. //_I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1267. //_I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1268. //_I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1269. //_I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1270. //_I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1271. //_I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1272. //
  1273. //_I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer;
  1274. //_I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer;
  1275. //_I2C_MASTER_EXT UBYTE *I2C_pReadBuffer;
  1276. //
  1277. //_I2C_MASTER_EXT BOOL I2C_TimeOutFlg;
  1278. //_I2C_MASTER_EXT BOOL I2C_DMA_TimeOutFlg;
  1279. //_I2C_MASTER_EXT BOOL I2C_DMA_FltFlg;
  1280. //_I2C_MASTER_EXT UBYTE I2C_TimeOutCnt;
  1281. //_I2C_MASTER_EXT BOOL I2C_EEFltFlg;
  1282. #endif
  1283. /************************************************************************
  1284. Exported Function Call Prototypes
  1285. *************************************************************************/
  1286. //#ifdef _I2C_MASTER_C_
  1287. //
  1288. //_I2C_MASTER_EXT void i2c_voReadTest(void);
  1289. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1290. //_I2C_MASTER_EXT void i2c_voBufferReadTest(void);
  1291. //
  1292. //_I2C_MASTER_EXT void i2c_voWaitEEReady(void);
  1293. //_I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
  1294. //_I2C_MASTER_EXT void i2c_voInfoWriteBuffer(void);
  1295. //_I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1296. //_I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1297. //_I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE WriteAddr, UBYTE NBytesToWrite);
  1298. //_I2C_MASTER_EXT void i2c_voDefaultWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1299. //_I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1300. //_I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1301. //_I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
  1302. //_I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1303. //_I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
  1304. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1305. //#else
  1306. //_I2C_MASTER_EXT void i2c_voReadTest(void);
  1307. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1308. //_I2C_MASTER_EXT void i2c_voBufferReadTest(void);
  1309. //
  1310. //_I2C_MASTER_EXT void i2c_voWaitEEReady(void);
  1311. //_I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
  1312. //_I2C_MASTER_EXT void i2c_voDefaultWriteBuffer(void);
  1313. //_I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1314. //_I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1315. //_I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE WriteAddr, UBYTE NBytesToWrite);
  1316. //_I2C_MASTER_EXT void i2c_voInfoWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1317. //_I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1318. //_I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1319. //_I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
  1320. //_I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1321. //_I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
  1322. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1323. //
  1324. //#endif
  1325. /************************************************************************
  1326. Flag Define (N/A)
  1327. *************************************************************************/
  1328. #endif
  1329. /************************************************************************
  1330. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  1331. All rights reserved.
  1332. *************************************************************************
  1333. End of this File (EOF)!
  1334. Do not put anything after this part!
  1335. *************************************************************************/