i2c_master.h 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313
  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 8.40.2
  7. CPU TYPE : GD32F30x
  8. *************************************************************************
  9. Copyright (c) 2022 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. /************************************************************************
  23. Included File
  24. *************************************************************************/
  25. #include "user.h"
  26. #include "AssistCurve.h"
  27. #include "bikespeed.h"
  28. #include "Cadence.h"
  29. /************************************************************************
  30. Compiler Directives (N/A)
  31. *************************************************************************/
  32. #ifdef _I2C_MASTER_C_
  33. #define _I2C_MASTER_EXT
  34. #else
  35. #define _I2C_MASTER_EXT extern
  36. #endif
  37. /************************************************************************
  38. Definitions & Macros
  39. *************************************************************************/
  40. /* EEPROM information */
  41. #define I2C_EE_SIZE_NBYTES 1024 // 24C08: 8Kb,16Bytes/Page,64Pages
  42. #define I2C_EE_PAGESIZE_NBYTES 16
  43. #define I2C_EE_SIZE_NBLOCKS I2C_EE_SIZE_NBYTES / 256
  44. #define I2C_EE_SIZE_NPAGES I2C_EE_SIZE_NBYTES / I2C_EE_PAGESIZE_NBYTES
  45. #define I2C_SLAVEADDR_BLOCK1 0x00A0 // First 256 Bytes:0xA0, Second:0xA2,...0xA4,0xA6
  46. #define I2C_SLAVEADDR_BLOCK2 0x00A2 // A0/A2/A4/A6: 7-bit slave address to be sent
  47. #define I2C_SLAVEADDR_BLOCK3 0x00A4
  48. #define I2C_SLAVEADDR_BLOCK4 0x00A6
  49. /* Size of parameter written to EEPROM */
  50. #define I2C_MOTOR_PARA_N_BYTES 38 // I2C_SLAVEADDR_BLOCK1
  51. #define I2C_BIKE_PARA_N_BYTES 26 // I2C_SLAVEADDR_BLOCK1
  52. #define I2C_MCONTROL_PARA_N_BYTES 36 // I2C_SLAVEADDR_BLOCK1
  53. #define I2C_SENSOR_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
  54. #define I2C_ASSIST_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
  55. #define I2C_GEARBOX_PARA_N_BYTES 16 // I2C_SLAVEADDR_BLOCK1
  56. #define I2C_HISTORY_PARA_N_BYTES 78 // I2C_SLAVEADDR_BLOCK2
  57. #define I2C_MOTOR_PARA_N_WORDS I2C_MOTOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  58. #define I2C_BIKE_PARA_N_WORDS I2C_BIKE_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  59. #define I2C_MCONTROL_PARA_N_WORDS I2C_MCONTROL_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  60. #define I2C_SENSOR_PARA_N_WORDS I2C_SENSOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  61. #define I2C_ASSIST_PARA_N_WORDS I2C_ASSIST_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  62. #define I2C_GEARBOX_PARA_N_WORDS I2C_GEARBOX_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
  63. #define I2C_HISTORY_PARA_N_WORDS I2C_HISTORY_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK2
  64. #define I2C_PBUFFER_NWORDS 5
  65. #define I2C_PBUFFERBYTE_BYTES 6
  66. /* Address of parameter written to EEPROM */
  67. #define I2C_MOTOR_PARA_ARDDR 0X00
  68. #define I2C_BIKE_PARA_ARDDR I2C_MOTOR_PARA_ARDDR + I2C_MOTOR_PARA_N_BYTES
  69. #define I2C_MCONTROL_PARA_ARDDR I2C_BIKE_PARA_ARDDR + I2C_BIKE_PARA_N_BYTES
  70. #define I2C_SENSOR_PARA_ARDDR I2C_MCONTROL_PARA_ARDDR + I2C_MCONTROL_PARA_N_BYTES
  71. #define I2C_ASSIST_PARA_ARDDR I2C_SENSOR_PARA_ARDDR + I2C_SENSOR_PARA_N_BYTES
  72. #define I2C_GEARBOX_PARA_ADDR I2C_ASSIST_PARA_ARDDR + I2C_ASSIST_PARA_N_BYTES
  73. #define I2C_HISTORY_PARA_ARDDR 0x00
  74. #define I2C_MOTOR_PARA_CRC_ARDDR I2C_GEARBOX_PARA_ADDR + I2C_GEARBOX_PARA_N_BYTES
  75. #define I2C_BIKE_PARA_CRC_ARDDR I2C_MOTOR_PARA_CRC_ARDDR + 2
  76. #define I2C_MCONTROL_PARA_CRC_ARDDR I2C_BIKE_PARA_CRC_ARDDR + 2
  77. #define I2C_SENSOR_PARA_CRC_ARDDR I2C_MCONTROL_PARA_CRC_ARDDR + 2
  78. #define I2C_ASSIST_PARA_CRC_ARDDR I2C_SENSOR_PARA_CRC_ARDDR + 2
  79. #define I2C_GEARBOX_PARA_CRC_ADDR I2C_ASSIST_PARA_CRC_ARDDR + 2
  80. #define I2C_HISTORY_PARA_CRC_ARDDR I2C_HISTORY_PARA_ARDDR + I2C_HISTORY_PARA_N_BYTES
  81. #define I2C_RIDE_PARA_N_BYTES 32 // I2C_SLAVEADDR_BLOCK2
  82. #define I2C_RIDE_PARA_N_WORDS I2C_RIDE_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK2
  83. #define I2C_RIDE_PARA_ADDR I2C_HISTORY_PARA_CRC_ARDDR + 2
  84. #define I2C_RIDE_PARA_CRC_ADDR I2C_RIDE_PARA_ADDR + I2C_RIDE_PARA_N_BYTES
  85. #define I2C_BIKE_PARA2_N_BYTES 32 // I2C_SLAVEADDR_BLOCK2
  86. #define I2C_BIKE_PARA2_N_WORDS I2C_BIKE_PARA2_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK2
  87. #define I2C_BIKE_PARA2_ADDR I2C_RIDE_PARA_CRC_ADDR + 2
  88. #define I2C_BIKE_PARA2_CRC_ADDR I2C_BIKE_PARA2_ADDR + I2C_BIKE_PARA2_N_BYTES
  89. /* I2C TX size: cannot exceed 255, CRC: 6 Bytes */
  90. #define I2C_TX1_NBYTES \
  91. 12 + 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 + I2C_GEARBOX_PARA_N_BYTES // 172 bytes
  92. #define I2C_RETX1_TIMES 1
  93. #define I2C_TX2_NBYTES 6 + I2C_HISTORY_PARA_N_BYTES + I2C_RIDE_PARA_N_BYTES + I2C_BIKE_PARA2_N_BYTES// 78 Bytes
  94. #define I2C_RETX2_TIMES 1
  95. #define I2C1_TX_DMA_NUM (I2C_TX1_NBYTES > I2C_TX2_NBYTES ? I2C_TX1_NBYTES : I2C_TX2_NBYTES)
  96. /* I2C RX size: cannot exceed 255 */
  97. #define I2C_RX1_NBYTES I2C_TX1_NBYTES
  98. #define I2C_RX2_NBYTES I2C_TX2_NBYTES
  99. #define I2C1_RX_DMA_NUM (I2C_RX1_NBYTES > I2C_RX2_NBYTES ? I2C_RX1_NBYTES : I2C_RX2_NBYTES)
  100. #define I2C_RX_TIMES 2
  101. /* I2C communication timeout */
  102. #define I2C_SHORT_TIMEOUT 10000
  103. #define I2C_LONG_TIMEOUT ((ULONG)I2C_SHORT_TIMEOUT * 6)
  104. #define I2C_DMA_TIMEOUT 100000L
  105. /************************************************************************
  106. System Parameters
  107. *************************************************************************/
  108. /*Reserve Para*/
  109. #define I2CReserve \
  110. { \
  111. 0, 0, 0, 0, 0 \
  112. }
  113. #define I2CReserve_Byte \
  114. { \
  115. 0, 0, 0, 0, 0 \
  116. }
  117. /* Motor Para */
  118. #define I2CuwPolePairs \
  119. { \
  120. ((UWORD)M_POLE_PAIRS), 0, 0, 0, 0 \
  121. }
  122. #define I2CuwRsmOhm \
  123. { \
  124. ((UWORD)M_RS_OHM), 0, 0, 0, 0 \
  125. }
  126. #define I2CuwLduH \
  127. { \
  128. ((UWORD)M_LD_NOLOAD_MH), 0, 0, 0, 0 \
  129. }
  130. #define I2CuwLquH \
  131. { \
  132. ((UWORD)M_LQ_NOLOAD_MH), 0, 0, 0, 0 \
  133. }
  134. #define I2CuwFluxmWb \
  135. { \
  136. ((UWORD)M_FLUX_WB), 0, 0, 0, 0 \
  137. }
  138. #define I2CuwIdMaxA \
  139. { \
  140. ((UWORD)M_ID_MAX_AP), 0, 0, 0, 0 \
  141. }
  142. #define I2CuwIdMinA \
  143. { \
  144. ((UWORD)M_ID_MIN_AP), 0, 0, 0, 0 \
  145. }
  146. #define I2CuwRSpdRpm \
  147. { \
  148. ((UWORD)M_R_SPD_RPM), 0, 0, 0, 0 \
  149. }
  150. #define I2CuwRPwrWt \
  151. { \
  152. ((UWORD)M_R_PWR_WT), 0, 0, 0, 0 \
  153. }
  154. #define I2CuwRCurA \
  155. { \
  156. ((UWORD)M_R_IRMS_A), 0, 0, 0, 0 \
  157. }
  158. #define I2CuwRVolV \
  159. { \
  160. ((UWORD)M_R_UDC_v), 0, 0, 0, 0 \
  161. }
  162. #define I2CuwJD \
  163. { \
  164. ((UWORD)M_JD), 0, 0, 0, 0 \
  165. }
  166. #define I2CuwTorMaxNm \
  167. { \
  168. ((UWORD)M_MAX_TOR_NM), 0, 0, 0, 0 \
  169. }
  170. #define I2CMotorPara \
  171. { \
  172. I2CuwPolePairs, I2CuwRsmOhm, I2CuwLduH, I2CuwLquH, I2CuwFluxmWb, I2CuwIdMaxA, I2CuwIdMinA, I2CuwRSpdRpm, I2CuwRPwrWt, I2CuwRCurA, \
  173. I2CuwRVolV, I2CuwJD, I2CuwTorMaxNm, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
  174. }
  175. /* Bike Para */
  176. #define I2CuwWheelPerimeter \
  177. { \
  178. ((UWORD)BIKE_WHEEL_PERIMETER), 0, 0, 0, 0 \
  179. }
  180. #define I2CuwMechRationMotor \
  181. { \
  182. ((UWORD)BIKE_MECH_RATION), 0, 0, 0, 0 \
  183. }
  184. #define I2CuwAssistMaxSpdKmH \
  185. { \
  186. ((UWORD)BIKE_SPEED_THROTTLE_MAX), 0, 0, 0, 0 \
  187. }
  188. #define I2CuwThrottleMaxSpdKmH \
  189. { \
  190. ((UWORD)BIKE_SPEED_WALK_MAX), 0, 0, 0, 0 \
  191. }
  192. #define I2CuwNmFrontChainring \
  193. { \
  194. BIKE_FRONTTEETH_NMB, 0, 0, 0, 0 \
  195. }
  196. #define I2CuwNmBackChainring \
  197. { \
  198. BIKE_BACKTEETH_NMB, 0, 0, 0, 0 \
  199. }
  200. #define I2CuwAssistSelect1 \
  201. { \
  202. ((UWORD)BIKE_ASSIST_MODE1), 0, 0, 0, 0 \
  203. }
  204. #define I2CuwAssistSelect2 \
  205. { \
  206. ((UWORD)BIKE_ASSIST_MODE2), 0, 0, 0, 0 \
  207. }
  208. #define I2CuwLightVoltage \
  209. { \
  210. ((UWORD)BIKE_LIGHT_PARA), 0, 0, 0, 0 \
  211. }
  212. #define I2CuwDeltDiameter \
  213. { \
  214. 0, 0, 0, 0, 0 \
  215. }
  216. #define I2CuwStartMode \
  217. { \
  218. ((UWORD)BIKE_START_MODE), 0, 0, 0, 0 \
  219. }
  220. #define I2CuwAutoPowerOffTime \
  221. { \
  222. ((UWORD)BIKE_POWER_PARA), 0, 0, 0, 0 \
  223. }
  224. #define I2CuwThrottleSmooth \
  225. { \
  226. ((UWORD)BIKE_THROTTLE_SMOOTH), 0, 0, 0, 0 \
  227. }
  228. #define I2CBikePara \
  229. { \
  230. I2CuwWheelPerimeter, I2CuwMechRationMotor, I2CuwAssistMaxSpdKmH, I2CuwThrottleMaxSpdKmH, I2CuwNmFrontChainring, I2CuwNmBackChainring, \
  231. I2CuwAssistSelect1, I2CuwAssistSelect2, I2CuwLightVoltage, I2CuwDeltDiameter, I2CuwStartMode, I2CuwAutoPowerOffTime, I2CuwThrottleSmooth \
  232. }
  233. /* MControl Para */
  234. #define I2CParaFirstSetFlg \
  235. { \
  236. 1, 0, 0, 0, 0 \
  237. }
  238. #define I2CSpiOffsetFirstSetFlg \
  239. { \
  240. 0, 0, 0, 0, 0 \
  241. }
  242. #define I2CswSPIPosOffsetOrigin \
  243. { \
  244. 0, 0, 0, 0, 0 \
  245. }
  246. #define I2CswSPIPosOffsetNow \
  247. { \
  248. 0, 0, 0, 0, 0 \
  249. }
  250. #define I2CuwIPeakMaxA \
  251. { \
  252. ((UWORD)M_IS_PEAK_MAX_AP), 0, 0, 0, 0 \
  253. }
  254. #define I2CuwAlamOCurA \
  255. { \
  256. ((UWORD)ALM_OVR_CNT_VAL), 0, 0, 0, 0 \
  257. }
  258. #define I2CuwAlamOVolV \
  259. { \
  260. ((UWORD)ALM_OVR_VLT_LVL1_VAL), 0, 0, 0, 0 \
  261. }
  262. #define I2CuwAlamUVolV \
  263. { \
  264. ((UWORD)ALM_UNDR_VLT_LVL1_VAL), 0, 0, 0, 0 \
  265. }
  266. #define I2CuwAlamOverSpdRpm \
  267. { \
  268. ((UWORD)ALM_OVR_SPD_VAL), 0, 0, 0, 0 \
  269. }
  270. #define I2CuwAlamOverHeatCe \
  271. { \
  272. ((UWORD)ALM_IPM_OVR_HEAT_VAL), 0, 0, 0, 0 \
  273. }
  274. #define I2CuwAlamRecHeatCe \
  275. { \
  276. ((UWORD)ALM_IPM_OVR_HEAT_REC_VAL), 0, 0, 0, 0 \
  277. }
  278. #define I2CuwPwrLimitStartCe \
  279. { \
  280. ((UWORD)PWRLIM_START_THRESHOLD_TEMP), 0, 0, 0, 0 \
  281. }
  282. #define I2CuwCONTROLFUNCRUISE \
  283. { \
  284. ((UWORD)THOTTLECRUISE_EN) \
  285. }
  286. #define I2CuwThrottleGear \
  287. { \
  288. ((UWORD)THROTTLEGEAR_ENABLE) \
  289. }
  290. #define I2CMControlPara \
  291. { \
  292. I2CParaFirstSetFlg,I2CSpiOffsetFirstSetFlg,I2CswSPIPosOffsetOrigin, I2CswSPIPosOffsetNow, I2CuwIPeakMaxA, I2CuwAlamOCurA, I2CuwAlamOVolV, I2CuwAlamUVolV, I2CuwAlamOverSpdRpm, \
  293. I2CuwAlamOverHeatCe, I2CuwAlamRecHeatCe, I2CuwPwrLimitStartCe, I2CReserve, I2CReserve, I2CReserve, I2CuwCONTROLFUNCRUISE, I2CuwThrottleGear, I2CReserve \
  294. }
  295. /* Sensor Para */
  296. #define I2CuwTorSensorOffsetOrigin \
  297. { \
  298. 0, 0, 0, 0, 0 \
  299. }
  300. #define I2CuwTorSensorOffsetNow1 \
  301. { \
  302. 0, 0, 0, 0, 0 \
  303. }
  304. #define I2CuwTorSensorOffsetNow2 \
  305. { \
  306. 0, 0, 0, 0, 0 \
  307. }
  308. #define I2CuwTorSensorOffsetNow3 \
  309. { \
  310. 0, 0, 0, 0, 0 \
  311. }
  312. #define I2CuwTorSensorOffsetNow4 \
  313. { \
  314. 0, 0, 0, 0, 0 \
  315. }
  316. #define I2CuwBikeTorMaxNm \
  317. { \
  318. 850, 0, 0, 0, 0 \
  319. }
  320. #define I2CuwBikeTor1StepRealNm \
  321. { \
  322. 250, 0, 0, 0, 0 \
  323. }
  324. #define I2CuwBikeTor1StepADC \
  325. { \
  326. 1427, 0, 0, 0, 0 \
  327. }
  328. #define I2CuwBikeTor2StepRealNm \
  329. { \
  330. 500, 0, 0, 0, 0 \
  331. }
  332. #define I2CuwBikeTor2StepADC \
  333. { \
  334. 1985, 0, 0, 0, 0 \
  335. }
  336. #define I2CuwBikeTor3StepRealNm \
  337. { \
  338. 750, 0, 0, 0, 0 \
  339. }
  340. #define I2CuwBikeTor3StepADC \
  341. { \
  342. 2544, 0, 0, 0, 0 \
  343. }
  344. #define I2CuwBikeTor4StepRealNm \
  345. { \
  346. 1000, 0, 0, 0, 0 \
  347. }
  348. #define I2CuwBikeTor4StepADC \
  349. { \
  350. 3103, 0, 0, 0, 0 \
  351. }
  352. #define I2CuwCadSensorPulseNm \
  353. { \
  354. CADENCE_NUMBERS_PULSES, 0, 0, 0, 0 \
  355. }
  356. #define I2CuwBikeSpdSensorPulseNm \
  357. { \
  358. BIKESPEED_NUMBERS_PULSES, 0, 0, 0, 0 \
  359. }
  360. #define I2CSensorPara \
  361. { \
  362. I2CuwTorSensorOffsetOrigin, I2CuwTorSensorOffsetNow1, I2CuwTorSensorOffsetNow2, I2CuwTorSensorOffsetNow3, I2CuwTorSensorOffsetNow4, \
  363. I2CuwBikeTorMaxNm, I2CuwBikeTor1StepRealNm, I2CuwBikeTor1StepADC, I2CuwBikeTor2StepRealNm, I2CuwBikeTor2StepADC, \
  364. I2CuwBikeTor3StepRealNm, I2CuwBikeTor3StepADC, I2CuwBikeTor4StepRealNm, I2CuwBikeTor4StepADC, I2CuwCadSensorPulseNm, \
  365. I2CuwBikeSpdSensorPulseNm, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
  366. }
  367. /* Assist Para */
  368. #define I2CswStartupGain \
  369. { \
  370. 4096, 0, 0, 0, 0 \
  371. }
  372. #define I2CswStartcruiseGain \
  373. { \
  374. 0, 0, 0, 0, 0 \
  375. }
  376. #define I2CswNmAssistChangeNum \
  377. { \
  378. 0, 0, 0, 0, 0 \
  379. }
  380. #define I2CswG1AssistCoefaH \
  381. { \
  382. 0, 0, 0, 0, 0 \
  383. }
  384. #define I2CswG1AssistCoefaL \
  385. { \
  386. 0, 0, 0, 0, 0 \
  387. }
  388. #define I2CswG1AssistCoefbH \
  389. { \
  390. 0, 0, 0, 0, 0 \
  391. }
  392. #define I2CswG1AssistCoefbL \
  393. { \
  394. 0, 0, 0, 0, 0 \
  395. }
  396. #define I2CswG1AssistCoefcH \
  397. { \
  398. 0, 0, 0, 0, 0 \
  399. }
  400. #define I2CswG1AssistCoefcL \
  401. { \
  402. 0, 0, 0, 0, 0 \
  403. }
  404. #define I2CswG2AssistCoefaH \
  405. { \
  406. 0, 0, 0, 0, 0 \
  407. }
  408. #define I2CswG2AssistCoefaL \
  409. { \
  410. 0, 0, 0, 0, 0 \
  411. }
  412. #define I2CswG2AssistCoefbH \
  413. { \
  414. 0, 0, 0, 0, 0 \
  415. }
  416. #define I2CswG2AssistCoefbL \
  417. { \
  418. 0, 0, 0, 0, 0 \
  419. }
  420. #define I2CswG2AssistCoefcH \
  421. { \
  422. 0, 0, 0, 0, 0 \
  423. }
  424. #define I2CswG2AssistCoefcL \
  425. { \
  426. 0, 0, 0, 0, 0 \
  427. }
  428. #define I2CswG3AssistCoefaH \
  429. { \
  430. 0, 0, 0, 0, 0 \
  431. }
  432. #define I2CswG3AssistCoefaL \
  433. { \
  434. 0, 0, 0, 0, 0 \
  435. }
  436. #define I2CswG3AssistCoefbH \
  437. { \
  438. 0, 0, 0, 0, 0 \
  439. }
  440. #define I2CswG3AssistCoefbL \
  441. { \
  442. 0, 0, 0, 0, 0 \
  443. }
  444. #define I2CswG3AssistCoefcH \
  445. { \
  446. 0, 0, 0, 0, 0 \
  447. }
  448. #define I2CswG3AssistCoefcL \
  449. { \
  450. 0, 0, 0, 0, 0 \
  451. }
  452. #define I2CswG4AssistCoefaH \
  453. { \
  454. 0, 0, 0, 0, 0 \
  455. }
  456. #define I2CswG4AssistCoefaL \
  457. { \
  458. 0, 0, 0, 0, 0 \
  459. }
  460. #define I2CswG4AssistCoefbH \
  461. { \
  462. 0, 0, 0, 0, 0 \
  463. }
  464. #define I2CswG4AssistCoefbL \
  465. { \
  466. 0, 0, 0, 0, 0 \
  467. }
  468. #define I2CswG4AssistCoefcH \
  469. { \
  470. 0, 0, 0, 0, 0 \
  471. }
  472. #define I2CswG4AssistCoefcL \
  473. { \
  474. 0, 0, 0, 0, 0 \
  475. }
  476. #define I2CswG5AssistCoefaH \
  477. { \
  478. 0, 0, 0, 0, 0 \
  479. }
  480. #define I2CswG5AssistCoefaL \
  481. { \
  482. 0, 0, 0, 0, 0 \
  483. }
  484. #define I2CswG5AssistCoefbH \
  485. { \
  486. 0, 0, 0, 0, 0 \
  487. }
  488. #define I2CswG5AssistCoefbL \
  489. { \
  490. 0, 0, 0, 0, 0 \
  491. }
  492. #define I2CswG5AssistCoefcH \
  493. { \
  494. 0, 0, 0, 0, 0 \
  495. }
  496. #define I2CswG5AssistCoefcL \
  497. { \
  498. 0, 0, 0, 0, 0 \
  499. }
  500. #define I2CswCadAssistCoefa \
  501. { \
  502. 0, 0, 0, 0, 0 \
  503. }
  504. #define I2CswCadAssistCoefb \
  505. { \
  506. 0, 0, 0, 0, 0 \
  507. }
  508. #define I2CswCadAssistCoefc \
  509. { \
  510. 0, 0, 0, 0, 0 \
  511. }
  512. #define I2CuwAssistStartNm \
  513. { \
  514. TORQUE_START_THRESHOLD, 0, 0, 0, 0 \
  515. }
  516. #define I2CuwAssistStopNm \
  517. { \
  518. TORQUE_STOP_THRESHOLD, 0, 0, 0, 0 \
  519. }
  520. #define I2CuwStartUpGainStep \
  521. { \
  522. 50, 0, 0, 0, 0 \
  523. }
  524. #define I2CuwStartUpCadNm \
  525. { \
  526. 700, 0, 0, 0, 0 \
  527. }
  528. #define I2CuwTorLPFCadNm \
  529. { \
  530. 64, 0, 0, 0, 0 \
  531. }
  532. #define I2CuwSpeedAssistSpdRpm \
  533. { \
  534. BIKE_SPD_MOTOR_CONSTANT_COMMAND, 0, 0, 0, 0 \
  535. }
  536. #define I2CuwSpeedAssistIMaxA \
  537. { \
  538. BIKE_SPD_MOTOR_CURRENT_MAX, 0, 0, 0, 0 \
  539. }
  540. #define I2CuwAssistLimitBikeSpdStart \
  541. { \
  542. BIKE_SPEED_IQLIMIT_THRESHOLD1, 0, 0, 0, 0 \
  543. }
  544. #define I2CuwAssistLimitBikeSpdStop \
  545. { \
  546. BIKE_SPEED_IQLIMIT_THRESHOLD2, 0, 0, 0, 0 \
  547. }
  548. #define I2CuwCadenceAssistWeight \
  549. { \
  550. 50, 0, 0, 0, 0 \
  551. }
  552. #define I2CAssistPara \
  553. { \
  554. I2CswStartupGain, I2CswStartcruiseGain, I2CuwAssistStartNm, I2CuwAssistStopNm, I2CuwStartUpGainStep, I2CuwStartUpCadNm, I2CuwTorLPFCadNm, \
  555. I2CuwSpeedAssistSpdRpm, I2CuwSpeedAssistIMaxA, I2CuwAssistLimitBikeSpdStart, I2CuwAssistLimitBikeSpdStop, I2CuwCadenceAssistWeight, \
  556. I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
  557. }
  558. /*GearBox Params*/
  559. #define I2CuwGearBoxPara_GearNum \
  560. { \
  561. 9, 0, 0, 0, 0 \
  562. }
  563. #define I2CuwGearBoxPara_CadenceMin \
  564. { \
  565. 30, 0, 0, 0, 0 \
  566. }
  567. #define I2CuwGearBoxPara_CadenceMax \
  568. { \
  569. 120, 0, 0, 0, 0 \
  570. }
  571. #define I2CGearBoxPara \
  572. { \
  573. I2CuwGearBoxPara_GearNum, I2CuwGearBoxPara_CadenceMin, I2CuwGearBoxPara_CadenceMax \
  574. }
  575. /* History Para */
  576. #define I2CuwAssModSelect \
  577. { \
  578. 0, 0, 0, 0, 0 \
  579. }
  580. #define I2CuwOpenTimes \
  581. { \
  582. 0, 0, 0, 0, 0 \
  583. }
  584. #define I2CuwUsedTimeH \
  585. { \
  586. 0, 0, 0, 0, 0 \
  587. }
  588. #define I2CuwUsedTimeL \
  589. { \
  590. 0, 0, 0, 0, 0 \
  591. }
  592. #define I2CuwNTCTempMaxCe \
  593. { \
  594. 0, 0, 0, 0, 0 \
  595. }
  596. #define I2CuwNTCTempMinCe \
  597. { \
  598. 100, 0, 0, 0, 0 \
  599. }
  600. #define I2CuwAlamHOcurTimes \
  601. { \
  602. 0, 0, 0, 0, 0 \
  603. }
  604. #define I2CuwAlamSOcurTimes \
  605. { \
  606. 0, 0, 0, 0, 0 \
  607. }
  608. #define I2CuwAlamOHeatTimes \
  609. { \
  610. 0, 0, 0, 0, 0 \
  611. }
  612. #define I2CuwAlamRotorLockTimes \
  613. { \
  614. 0, 0, 0, 0, 0 \
  615. }
  616. #define I2CuwAlamPhsLossTimes \
  617. { \
  618. 0, 0, 0, 0, 0 \
  619. }
  620. #define I2CuwAlamOVolTimes \
  621. { \
  622. 0, 0, 0, 0, 0 \
  623. }
  624. #define I2CuwAlamUVolTimes \
  625. { \
  626. 0, 0, 0, 0, 0 \
  627. }
  628. #define I2CuwAlamComOTimeTimes \
  629. { \
  630. 0, 0, 0, 0, 0 \
  631. }
  632. #define I2CuwG1AvgPwrConsumption \
  633. { \
  634. 100, 0, 0, 0, 0 \
  635. }
  636. #define I2CuwG2AvgPwrConsumption \
  637. { \
  638. 160, 0, 0, 0, 0 \
  639. }
  640. #define I2CuwG3AvgPwrConsumption \
  641. { \
  642. 190, 0, 0, 0, 0 \
  643. }
  644. #define I2CuwG4AvgPwrConsumption \
  645. { \
  646. 270, 0, 0, 0, 0 \
  647. }
  648. #define I2CuwG5AvgPwrConsumption \
  649. { \
  650. 180, 0, 0, 0, 0 \
  651. }
  652. #define I2CuwODOTripH \
  653. { \
  654. 0, 0, 0, 0, 0 \
  655. }
  656. #define I2CuwODOTripL \
  657. { \
  658. 0, 0, 0, 0, 0 \
  659. }
  660. #define I2CuwODOTimeH \
  661. { \
  662. 0, 0, 0, 0, 0 \
  663. }
  664. #define I2CuwODOTimeL \
  665. { \
  666. 0, 0, 0, 0, 0 \
  667. }
  668. #define I2CuwTripSumH \
  669. { \
  670. 0, 0, 0, 0, 0 \
  671. }
  672. #define I2CuwTripSumL \
  673. { \
  674. 0, 0, 0, 0, 0 \
  675. }
  676. #define I2CuwTripSumTimeH \
  677. { \
  678. 0, 0, 0, 0, 0 \
  679. }
  680. #define I2CuwTripSumTimeL \
  681. { \
  682. 0, 0, 0, 0, 0 \
  683. }
  684. #define I2CuwTorSensorAlamTimes \
  685. { \
  686. 0, 0, 0, 0, 0 \
  687. }
  688. #define I2CuwCadSensorAlamTimes \
  689. { \
  690. 0, 0, 0, 0, 0 \
  691. }
  692. #define I2CuwBikeSpdSensorAlamTimes \
  693. { \
  694. 0, 0, 0, 0, 0 \
  695. }
  696. #define I2CuwPosSensorAlamTimes \
  697. { \
  698. 0, 0, 0, 0, 0 \
  699. }
  700. #define I2CHistoryPara \
  701. { \
  702. I2CuwAssModSelect, I2CuwOpenTimes, I2CuwUsedTimeH, I2CuwUsedTimeL, I2CuwNTCTempMaxCe, I2CuwNTCTempMinCe, I2CuwAlamHOcurTimes, \
  703. I2CuwAlamSOcurTimes, I2CuwAlamOHeatTimes, I2CuwAlamRotorLockTimes, I2CuwAlamPhsLossTimes, I2CuwAlamOVolTimes, I2CuwAlamUVolTimes, \
  704. I2CuwAlamComOTimeTimes, I2CuwG1AvgPwrConsumption, I2CuwG2AvgPwrConsumption, I2CuwG3AvgPwrConsumption, I2CuwG4AvgPwrConsumption, \
  705. I2CuwG5AvgPwrConsumption, I2CuwODOTripH, I2CuwODOTripL, I2CuwODOTimeH, I2CuwODOTimeL, I2CuwTripSumH, I2CuwTripSumL, I2CuwTripSumTimeH, \
  706. I2CuwTripSumTimeL, I2CuwTorSensorAlamTimes, I2CuwCadSensorAlamTimes, I2CuwBikeSpdSensorAlamTimes, I2CuwPosSensorAlamTimes, I2CReserve, \
  707. I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
  708. }
  709. /*Ride Params*/
  710. #define I2CucRidePara_AssistRatioGain1 \
  711. { \
  712. 100, 0, 0, 0, 0 \
  713. }
  714. #define I2CucRidePara_AssistAccelerationGain1 \
  715. { \
  716. 100, 0, 0, 0, 0 \
  717. }
  718. #define I2CucRidePara_AssistRatioGain2 \
  719. { \
  720. 100, 0, 0, 0, 0 \
  721. }
  722. #define I2CucRidePara_AssistAccelerationGain2 \
  723. { \
  724. 100, 0, 0, 0, 0 \
  725. }
  726. #define I2CucRidePara_AssistRatioGain3 \
  727. { \
  728. 100, 0, 0, 0, 0 \
  729. }
  730. #define I2CucRidePara_AssistAccelerationGain3 \
  731. { \
  732. 100, 0, 0, 0, 0 \
  733. }
  734. #define I2CucRidePara_AssistRatioGain4 \
  735. { \
  736. 100, 0, 0, 0, 0 \
  737. }
  738. #define I2CucRidePara_AssistAccelerationGain4 \
  739. { \
  740. 100, 0, 0, 0, 0 \
  741. }
  742. #define I2CucRidePara_AssistRatioGain5 \
  743. { \
  744. 100, 0, 0, 0, 0 \
  745. }
  746. #define I2CucRidePara_AssistAccelerationGain5 \
  747. { \
  748. 100, 0, 0, 0, 0 \
  749. }
  750. #define I2CucRidePara_MaxCurrentGain1 \
  751. { \
  752. 100, 0, 0, 0, 0 \
  753. }
  754. #define I2CucRidePara_MaxTorqueGain1 \
  755. { \
  756. 100, 0, 0, 0, 0 \
  757. }
  758. #define I2CucRidePara_MaxCurrentGain2 \
  759. { \
  760. 100, 0, 0, 0, 0 \
  761. }
  762. #define I2CucRidePara_MaxTorqueGain2 \
  763. { \
  764. 100, 0, 0, 0, 0 \
  765. }
  766. #define I2CucRidePara_MaxCurrentGain3 \
  767. { \
  768. 100, 0, 0, 0, 0 \
  769. }
  770. #define I2CucRidePara_MaxTorqueGain3 \
  771. { \
  772. 100, 0, 0, 0, 0 \
  773. }
  774. #define I2CucRidePara_MaxCurrentGain4 \
  775. { \
  776. 100, 0, 0, 0, 0 \
  777. }
  778. #define I2CucRidePara_MaxTorqueGain4 \
  779. { \
  780. 100, 0, 0, 0, 0 \
  781. }
  782. #define I2CucRidePara_MaxCurrentGain5 \
  783. { \
  784. 100, 0, 0, 0, 0 \
  785. }
  786. #define I2CucRidePara_MaxTorqueGain5 \
  787. { \
  788. 100, 0, 0, 0, 0 \
  789. }
  790. #define I2CRidePara \
  791. { \
  792. I2CucRidePara_AssistRatioGain1, I2CucRidePara_AssistAccelerationGain1, I2CucRidePara_AssistRatioGain2, I2CucRidePara_AssistAccelerationGain2, \
  793. I2CucRidePara_AssistRatioGain3, I2CucRidePara_AssistAccelerationGain3, I2CucRidePara_AssistRatioGain4, I2CucRidePara_AssistAccelerationGain4, \
  794. I2CucRidePara_AssistRatioGain5, I2CucRidePara_AssistAccelerationGain5, \
  795. I2CucRidePara_MaxCurrentGain1, I2CucRidePara_MaxTorqueGain1, I2CucRidePara_MaxCurrentGain2, I2CucRidePara_MaxTorqueGain2, \
  796. I2CucRidePara_MaxCurrentGain3, I2CucRidePara_MaxTorqueGain3, I2CucRidePara_MaxCurrentGain4, I2CucRidePara_MaxTorqueGain4, \
  797. I2CucRidePara_MaxCurrentGain5, I2CucRidePara_MaxTorqueGain5, \
  798. I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, \
  799. I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte, I2CReserve_Byte\
  800. }
  801. /*BikePara2 */
  802. #define I2CucBikePara2_NoneOBCEnable \
  803. { \
  804. BIKE_NONEOBCEBNABLE, 0, 0, 0, 0 \
  805. }
  806. #define I2CucBikePara2_RearLightCycle \
  807. { \
  808. BIKE_REARLIGHTCYCLE, 0, 0, 0, 0 \
  809. }
  810. #define I2CucBikePara2_RearLightDuty \
  811. { \
  812. BIKE_REARLIGHTDUTY, 0, 0, 0, 0 \
  813. }
  814. #define I2CucBikePara2_DeltaBikeSpeedLimit \
  815. { \
  816. BIKE_DELTASPEEDLIMITION, 0, 0, 0, 0 \
  817. }
  818. #define I2CBikePara2 \
  819. { \
  820. I2CucBikePara2_NoneOBCEnable, I2CucBikePara2_RearLightCycle, I2CucBikePara2_RearLightDuty, I2CucBikePara2_DeltaBikeSpeedLimit, \
  821. I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, \
  822. I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
  823. }
  824. /* System Para */
  825. #define SYSPARA2 \
  826. { \
  827. I2CMotorPara, I2CBikePara, I2CMControlPara, I2CSensorPara, I2CAssistPara, I2CGearBoxPara, I2CHistoryPara, I2CRidePara, I2CBikePara2 \
  828. }
  829. /************************************************************************
  830. TypeDefs & Structure defines (N/A)
  831. *************************************************************************/
  832. typedef struct
  833. {
  834. UBYTE ubTX1NPages;
  835. UBYTE ubTX1NSingleBytes;
  836. } I2C_TX_COF;
  837. typedef struct
  838. {
  839. BOOL blTX1FinishFlg;
  840. BOOL blTX2FinishFlg;
  841. } I2C_TX_OUT;
  842. typedef struct
  843. {
  844. BOOL blMotorParaFltFlg;
  845. BOOL blBikeParaFltFlg;
  846. BOOL blMControlParaFltFlg;
  847. BOOL blSensorParaFltFlg;
  848. BOOL blAssistParaFltFlg;
  849. BOOL blGearBoxParaFltFlg;
  850. BOOL blHistoryParaFltFlg;
  851. BOOL blRideParaFltFlg;
  852. BOOL blBikePara2FltFlg;
  853. BOOL ReadFinishFlg;
  854. UBYTE ubRdCnt;
  855. } I2C_RXCRC_OUT;
  856. typedef struct
  857. {
  858. UWORD uwDefault1;
  859. UWORD uwReal;
  860. UWORD uwMin;
  861. UWORD uwMax;
  862. UWORD uwUnit;
  863. } UWORD_VALUE;
  864. typedef struct
  865. {
  866. SWORD swDefault1;
  867. SWORD swReal;
  868. SWORD swMin;
  869. SWORD swMax;
  870. UWORD uwUnit;
  871. } SWORD_VALUE;
  872. typedef struct
  873. {
  874. UBYTE ucDefault1;
  875. UBYTE ucReal;
  876. UBYTE ucMin;
  877. UBYTE ucMax;
  878. UBYTE ucUnit;
  879. UBYTE RS;
  880. } UBYTE_VALUE;
  881. typedef struct
  882. {
  883. SBYTE scDefault1;
  884. SBYTE scReal;
  885. SBYTE scMin;
  886. SBYTE scMax;
  887. UBYTE ucUnit;
  888. UBYTE RS;
  889. } SBYTE_VALUE;
  890. typedef struct
  891. {
  892. UWORD_VALUE uwPolePairs;
  893. UWORD_VALUE uwRsmOhm;
  894. UWORD_VALUE uwLduH;
  895. UWORD_VALUE uwLquH;
  896. UWORD_VALUE uwFluxmWb;
  897. UWORD_VALUE uwIdMaxA;
  898. UWORD_VALUE uwIdMinA;
  899. UWORD_VALUE uwRSpdRpm;
  900. UWORD_VALUE uwRPwrWt;
  901. UWORD_VALUE uwRCurA;
  902. UWORD_VALUE uwRVolV;
  903. UWORD_VALUE uwJD;
  904. UWORD_VALUE uwTorMaxNm;
  905. UWORD_VALUE reserve1;
  906. UWORD_VALUE reserve2;
  907. UWORD_VALUE reserve3;
  908. UWORD_VALUE reserve4;
  909. UWORD_VALUE reserve5;
  910. UWORD_VALUE reserve6;
  911. } MOTOR_PARAMETER;
  912. typedef struct
  913. {
  914. UWORD_VALUE uwWheelPerimeter;
  915. UWORD_VALUE uwMechRationMotor;
  916. UWORD_VALUE uwThrottleMaxSpdKmH;
  917. UWORD_VALUE uwCartSpdKmH;
  918. UWORD_VALUE uwNmFrontChainring;
  919. UWORD_VALUE uwNmBackChainring;
  920. UWORD_VALUE uwAssistSelect1;
  921. UWORD_VALUE uwAssistSelect2;
  922. UWORD_VALUE uwLightVoltage;
  923. SWORD_VALUE swDeltPerimeter;
  924. UWORD_VALUE uwStartMode;
  925. UWORD_VALUE uwAutoPowerOffTime;
  926. UWORD_VALUE uwThrottleSmooth;
  927. } BIKE_PARAMETER;
  928. typedef struct
  929. {
  930. UWORD_VALUE ParaFirstSetFlg;
  931. UWORD_VALUE SpiOffsetFirstSetFlg;
  932. UWORD_VALUE uwSPIPosOffsetOrigin;
  933. UWORD_VALUE uwSPIPosOffsetNow;
  934. UWORD_VALUE uwIPeakMaxA;
  935. UWORD_VALUE uwAlamOCurA;
  936. UWORD_VALUE uwAlamOVolV;
  937. UWORD_VALUE uwAlamUVolV;
  938. UWORD_VALUE uwAlamOverSpdRpm;
  939. UWORD_VALUE uwAlamOverHeatCe;
  940. UWORD_VALUE uwAlamRecHeatCe;
  941. UWORD_VALUE uwPwrLimitStartCe;
  942. UWORD_VALUE uwAlamMotorOverHeatCe;
  943. UWORD_VALUE uwAlamMotorRecHeatCe;
  944. UWORD_VALUE uwPwrLimitMotorStartCe;
  945. UWORD_VALUE uwControlFunEN;
  946. UWORD_VALUE uwThrottleGearEN;
  947. UWORD_VALUE reserve1;
  948. } MControl_PARAMETER;
  949. typedef struct
  950. {
  951. UWORD_VALUE uwTorSensorOffsetOrigin;
  952. UWORD_VALUE uwTorSensorOffsetNow1;
  953. UWORD_VALUE uwTorSensorOffsetNow2;
  954. UWORD_VALUE uwTorSensorOffsetNow3;
  955. UWORD_VALUE uwTorSensorOffsetNow4;
  956. UWORD_VALUE uwBikeTorMaxNm;
  957. UWORD_VALUE uwBikeTor1StepRealNm;
  958. UWORD_VALUE uwBikeTor1StepADC;
  959. UWORD_VALUE uwBikeTor2StepRealNm;
  960. UWORD_VALUE uwBikeTor2StepADC;
  961. UWORD_VALUE uwBikeTor3StepRealNm;
  962. UWORD_VALUE uwBikeTor3StepADC;
  963. UWORD_VALUE uwBikeTor4StepRealNm;
  964. UWORD_VALUE uwBikeTor4StepADC;
  965. UWORD_VALUE uwCadSensorPulseNm;
  966. UWORD_VALUE uwBikeSpdSensorPulseNm;
  967. UWORD_VALUE reserve1;
  968. UWORD_VALUE reserve2;
  969. UWORD_VALUE reserve3;
  970. UWORD_VALUE reserve4;
  971. } Sensor_PARAMETER;
  972. typedef struct
  973. {
  974. UWORD_VALUE uwStartupGain;
  975. UWORD_VALUE uwStartcruiseGain;
  976. UWORD_VALUE uwAssistStartNm;
  977. UWORD_VALUE uwAssistStopNm;
  978. UWORD_VALUE uwStartUpGainStep;
  979. UWORD_VALUE uwStartUpCadNm;
  980. UWORD_VALUE uwTorLPFCadNm;
  981. UWORD_VALUE uwSpeedAssistSpdRpm;
  982. UWORD_VALUE uwSpeedAssistIMaxA;
  983. UWORD_VALUE uwAssistLimitBikeSpdStart;
  984. UWORD_VALUE uwAssistLimitBikeSpdStop;
  985. UWORD_VALUE uwCadenceAssistWeight;
  986. UWORD_VALUE reserve1;
  987. UWORD_VALUE reserve2;
  988. UWORD_VALUE reserve3;
  989. UWORD_VALUE reserve4;
  990. UWORD_VALUE reserve5;
  991. UWORD_VALUE reserve6;
  992. UWORD_VALUE reserve7;
  993. UWORD_VALUE reserve8;
  994. } Assist_PARAMETER;
  995. typedef struct
  996. {
  997. UWORD_VALUE uwGearBoxNum;
  998. UWORD_VALUE uwGearBoxCadenceMin;
  999. UWORD_VALUE uwGearBoxCadenceMax;
  1000. UWORD_VALUE reserve1;
  1001. UWORD_VALUE reserve2;
  1002. UWORD_VALUE reserve3;
  1003. UWORD_VALUE reserve4;
  1004. UWORD_VALUE reserve5;
  1005. }GearBox_PARAMETER;
  1006. typedef struct
  1007. {
  1008. UWORD_VALUE uwAssModSelect;
  1009. UWORD_VALUE uwOpenTimes;
  1010. UWORD_VALUE uwUsedTimeH;
  1011. UWORD_VALUE uwUsedTimeL;
  1012. UWORD_VALUE uwNTCTempMaxCe;
  1013. UWORD_VALUE uwNTCTempMinCe;
  1014. UWORD_VALUE uwAlamHOcurTimes;
  1015. UWORD_VALUE uwAlamSOcurTimes;
  1016. UWORD_VALUE uwAlamOHeatTimes;
  1017. UWORD_VALUE uwAlamRotorLockTimes;
  1018. UWORD_VALUE uwAlamPhsLossTimes;
  1019. UWORD_VALUE uwAlamOVolTimes;
  1020. UWORD_VALUE uwAlamUVolTimes;
  1021. UWORD_VALUE uwAlamComOTimeTimes;
  1022. UWORD_VALUE uwG1AvgPwrConsumption;
  1023. UWORD_VALUE uwG2AvgPwrConsumption;
  1024. UWORD_VALUE uwG3AvgPwrConsumption;
  1025. UWORD_VALUE uwG4AvgPwrConsumption;
  1026. UWORD_VALUE uwG5AvgPwrConsumption;
  1027. UWORD_VALUE uwODOTripH;
  1028. UWORD_VALUE uwODOTripL;
  1029. UWORD_VALUE uwODOTimeH;
  1030. UWORD_VALUE uwODOTimeL;
  1031. UWORD_VALUE uwTripSumH;
  1032. UWORD_VALUE uwTripSumL;
  1033. UWORD_VALUE uwTripSumTimeH;
  1034. UWORD_VALUE uwTripSumTimeL;
  1035. UWORD_VALUE uwTorSensorAlamTimes;
  1036. UWORD_VALUE uwCadSensorAlamTimes;
  1037. UWORD_VALUE uwBikeSpdSensorAlamTimes;
  1038. UWORD_VALUE uwPosSensorAlamTimes;
  1039. UWORD_VALUE uwRealODOTripH;//不可更改
  1040. UWORD_VALUE uwRealODOTripL;
  1041. UWORD_VALUE uwRealODOTimeH;
  1042. UWORD_VALUE uwRealODOTimeL;
  1043. UWORD_VALUE reserve1;
  1044. UWORD_VALUE reserve2;
  1045. UWORD_VALUE reserve3;
  1046. UWORD_VALUE reserve4;
  1047. } History_PARAMETER;
  1048. typedef struct
  1049. {
  1050. UBYTE_VALUE ucAssistRatioGain1; //1%
  1051. UBYTE_VALUE ucAssistAccelerationGain1; //1%
  1052. UBYTE_VALUE ucAssistRatioGain2; //1%
  1053. UBYTE_VALUE ucAssistAccelerationGain2; //1%
  1054. UBYTE_VALUE ucAssistRatioGain3; //1%
  1055. UBYTE_VALUE ucAssistAccelerationGain3; //1%
  1056. UBYTE_VALUE ucAssistRatioGain4; //1%
  1057. UBYTE_VALUE ucAssistAccelerationGain4; //1%
  1058. UBYTE_VALUE ucAssistRatioGain5; //1%
  1059. UBYTE_VALUE ucAssistAccelerationGain5; //1%
  1060. UBYTE_VALUE ucMaxCurrentGain1; //1%
  1061. UBYTE_VALUE ucMaxTorqueGain1; //1%
  1062. UBYTE_VALUE ucMaxCurrentGain2; //1%
  1063. UBYTE_VALUE ucMaxTorqueGain2; //1%
  1064. UBYTE_VALUE ucMaxCurrentGain3; //1%
  1065. UBYTE_VALUE ucMaxTorqueGain3; //1%
  1066. UBYTE_VALUE ucMaxCurrentGain4; //1%
  1067. UBYTE_VALUE ucMaxTorqueGain4; //1%
  1068. UBYTE_VALUE ucMaxCurrentGain5; //1%
  1069. UBYTE_VALUE ucMaxTorqueGain5; //1%
  1070. UBYTE_VALUE reserve1;
  1071. UBYTE_VALUE reserve2;
  1072. UBYTE_VALUE reserve3;
  1073. UBYTE_VALUE reserve4;
  1074. UBYTE_VALUE reserve5;
  1075. UBYTE_VALUE reserve6;
  1076. UBYTE_VALUE reserve7;
  1077. UBYTE_VALUE reserve8;
  1078. UBYTE_VALUE reserve9;
  1079. UBYTE_VALUE reserve10;
  1080. UBYTE_VALUE reserve11;
  1081. UBYTE_VALUE reserve12;
  1082. }Ride_PARAMETER;
  1083. typedef struct
  1084. {
  1085. UWORD_VALUE uwNoneOBCEnable;
  1086. UWORD_VALUE uwRearLightCycle;
  1087. UWORD_VALUE uwRearLightDuty;
  1088. SWORD_VALUE swDeltaBikeSpeedLimit;
  1089. UWORD_VALUE reserve1;
  1090. UWORD_VALUE reserve2;
  1091. UWORD_VALUE reserve3;
  1092. UWORD_VALUE reserve4;
  1093. UWORD_VALUE reserve5;
  1094. UWORD_VALUE reserve6;
  1095. UWORD_VALUE reserve7;
  1096. UWORD_VALUE reserve8;
  1097. UWORD_VALUE reserve9;
  1098. UWORD_VALUE reserve10;
  1099. UWORD_VALUE reserve11;
  1100. UWORD_VALUE reserve12;
  1101. } BIKE_PARAMETER2;
  1102. typedef struct
  1103. {
  1104. MOTOR_PARAMETER stMotorPara;
  1105. BIKE_PARAMETER stBikePara;
  1106. MControl_PARAMETER stMControlPara;
  1107. Sensor_PARAMETER stSensorPara;
  1108. Assist_PARAMETER stAssistPara;
  1109. GearBox_PARAMETER stGearBoxPara;
  1110. History_PARAMETER stHistoryPara;
  1111. Ride_PARAMETER stRidePara;
  1112. BIKE_PARAMETER2 stBikePara2;
  1113. } SYSTEM_PARAMETER2;
  1114. /************************************************************************
  1115. Constant Table
  1116. *************************************************************************/
  1117. /************************************************************************
  1118. Exported Variables
  1119. *************************************************************************/
  1120. #ifdef _I2C_MASTER_C_
  1121. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2 = SYSPARA2;
  1122. _I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1123. _I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1124. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 0};
  1125. _I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RX_TIMES][I2C1_RX_DMA_NUM];
  1126. _I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1127. _I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1128. _I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1129. _I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1130. _I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1131. _I2C_MASTER_EXT UWORD I2C_uwGearBoxParaRead[I2C_GEARBOX_PARA_N_WORDS];
  1132. _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1133. _I2C_MASTER_EXT UWORD I2C_uwRideParaRead[I2C_RIDE_PARA_N_WORDS];
  1134. _I2C_MASTER_EXT UWORD I2C_uwBikePara2Read[I2C_BIKE_PARA2_N_WORDS];
  1135. _I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1136. _I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1137. _I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer = I2C_ubWriteBuffer;
  1138. _I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer = I2C_ubHistoyWriteBuffer;
  1139. _I2C_MASTER_EXT UBYTE *I2C_pReadBuffer = I2C_ubReadBuffer[0];
  1140. _I2C_MASTER_EXT BOOL I2C_EE_ComuFltFlg = FALSE;
  1141. #else
  1142. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2;
  1143. _I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1144. _I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1145. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut;
  1146. _I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RX_TIMES][I2C1_RX_DMA_NUM];
  1147. _I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1148. _I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1149. _I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1150. _I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1151. _I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1152. _I2C_MASTER_EXT UWORD I2C_uwGearBoxParaRead[I2C_GEARBOX_PARA_N_WORDS];
  1153. _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1154. _I2C_MASTER_EXT UWORD I2C_uwRideParaRead[I2C_RIDE_PARA_N_WORDS];
  1155. _I2C_MASTER_EXT UWORD I2C_uwBikePara2Read[I2C_BIKE_PARA2_N_WORDS];
  1156. _I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1157. _I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1158. _I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer;
  1159. _I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer;
  1160. _I2C_MASTER_EXT UBYTE *I2C_pReadBuffer;
  1161. _I2C_MASTER_EXT BOOL I2C_EE_ComuFltFlg;
  1162. #endif
  1163. /************************************************************************
  1164. Exported Function Call Prototypes
  1165. *************************************************************************/
  1166. #ifdef _I2C_MASTER_C_
  1167. _I2C_MASTER_EXT void i2c_voDefaultWriteBuffer(void);
  1168. _I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1169. _I2C_MASTER_EXT void i2c_voHistoryDefaultWriteBuffer(void);
  1170. _I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1171. _I2C_MASTER_EXT void i2c_voInfoWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
  1172. _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
  1173. _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1174. _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(const UBYTE *ptubBuf, UWORD length);
  1175. _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1176. _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(const I2C_RXCRC_OUT *out);
  1177. #else
  1178. _I2C_MASTER_EXT void i2c_voDefaultWriteBuffer(void);
  1179. _I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1180. _I2C_MASTER_EXT void i2c_voHistoryDefaultWriteBuffer(void);
  1181. _I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1182. _I2C_MASTER_EXT void i2c_voInfoWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
  1183. _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
  1184. _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1185. _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(const UBYTE *ptubBuf, UWORD length);
  1186. _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1187. _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(const I2C_RXCRC_OUT *out);
  1188. #endif
  1189. /************************************************************************
  1190. Flag Define (N/A)
  1191. *************************************************************************/
  1192. #endif
  1193. /************************************************************************
  1194. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  1195. All rights reserved.
  1196. *************************************************************************
  1197. End of this File (EOF)!
  1198. Do not put anything after this part!
  1199. *************************************************************************/