i2c_master.h 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226
  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. /*Motor Para*/
  99. #define I2CuwPolePairs \
  100. { \
  101. ((UWORD)M_POLE_PAIRS) \
  102. }
  103. #define I2CuwRsmOhm \
  104. { \
  105. ((UWORD)M_RS_OHM) \
  106. }
  107. #define I2CuwLduH \
  108. { \
  109. ((UWORD)M_LD_NOLOAD_MH) \
  110. }
  111. #define I2CuwLquH \
  112. { \
  113. ((UWORD)M_LQ_NOLOAD_MH) \
  114. }
  115. #define I2CuwFluxmWb \
  116. { \
  117. ((UWORD)M_FLUX_WB) \
  118. }
  119. #define I2CuwIdMaxA \
  120. { \
  121. ((UWORD)M_ID_MAX_AP) \
  122. }
  123. #define I2CuwIdMinA \
  124. { \
  125. ((UWORD)M_ID_MIN_AP) \
  126. }
  127. #define I2CuwRSpdRpm \
  128. { \
  129. ((UWORD)M_R_SPD_RPM) \
  130. }
  131. #define I2CuwRPwrWt \
  132. { \
  133. ((UWORD)M_R_PWR_WT) \
  134. }
  135. #define I2CuwRCurA \
  136. { \
  137. ((UWORD)M_R_IRMS_A) \
  138. }
  139. #define I2CuwRVolV \
  140. { \
  141. ((UWORD)M_R_UDC_v) \
  142. }
  143. #define I2CuwJD \
  144. { \
  145. ((UWORD)M_JD) \
  146. }
  147. #define I2CuwTorMaxNm \
  148. { \
  149. ((UWORD)M_MAX_TOR_NM) \
  150. }
  151. #define I2CMotorPara \
  152. { \
  153. I2CuwPolePairs, I2CuwRsmOhm, I2CuwLduH, I2CuwLquH, I2CuwFluxmWb, I2CuwIdMaxA, I2CuwIdMinA, I2CuwRSpdRpm, I2CuwRPwrWt, I2CuwRCurA, \
  154. I2CuwRVolV, I2CuwJD, I2CuwTorMaxNm, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve \
  155. }
  156. /*Bike Para*/
  157. #define I2CuwWheelDiameter \
  158. { \
  159. ((UWORD)ASS_BIKE_WHEEL_DIAMETER) \
  160. }
  161. #define I2CuwDeltDiameter \
  162. { \
  163. 0 \
  164. }
  165. #define I2CuwMechRationMotor \
  166. { \
  167. ((UWORD)ASS_BIKE_MECH_RATION) \
  168. }
  169. #define I2CuwAssistMaxSpdKmH \
  170. { \
  171. ((UWORD)(ASS_THROTTLE_SPD_LIMIT>>4)) \
  172. }
  173. #define I2CuwThrottleMaxSpdKmH \
  174. { \
  175. ((UWORD)(ASS_CART_SPEED>>4)) \
  176. }
  177. #define I2CuwNmFrontChainring \
  178. { \
  179. BIKE_FRONTTEETH_NMB \
  180. }
  181. #define I2CuwNmBackChainring \
  182. { \
  183. BIKE_BACKTEETH_NMB \
  184. }
  185. #define I2CuwAssistSelect1 \
  186. { \
  187. ((UWORD)ASSISTMOD_SELECT_MODE1) \
  188. }
  189. #define I2CuwAssistSelect2 \
  190. { \
  191. ((UWORD)ASSISTMOD_SELECT_MODE2) \
  192. }
  193. #define I2CuwLightVoltage \
  194. { \
  195. ((UWORD)BIKE_LIGHT_CONFIG) \
  196. }
  197. #define I2CuwStartMode \
  198. { \
  199. ((UWORD)BIKE_START_MODE) \
  200. }
  201. #define I2CuwAutoPowerOffTime \
  202. { \
  203. ((UWORD)BIKE_AUTO_POWER_OFF_TIME) \
  204. }
  205. #define I2CBikePara \
  206. { \
  207. I2CuwWheelDiameter, I2CuwDeltDiameter, I2CuwMechRationMotor, I2CuwAssistMaxSpdKmH, I2CuwThrottleMaxSpdKmH, I2CuwNmFrontChainring, \
  208. I2CuwNmBackChainring, I2CuwAssistSelect1, I2CuwAssistSelect2, I2CuwLightVoltage, I2CuwStartMode, I2CuwAutoPowerOffTime, I2Creserve \
  209. }
  210. /*MControl Para*/
  211. #define I2CParaFirstSetFlg \
  212. { \
  213. 1 \
  214. }
  215. #define I2CSpiOffsetFirstSetFlg \
  216. { \
  217. 0 \
  218. }
  219. #define I2CswSPIPosOffsetOrigin \
  220. { \
  221. 0 \
  222. }
  223. #define I2CswSPIPosOffsetNow \
  224. { \
  225. 0 \
  226. }
  227. #define I2CuwIPeakMaxA \
  228. { \
  229. ((UWORD)M_IS_PEAK_MAX_AP) \
  230. }
  231. #define I2CuwAlamOCurA \
  232. { \
  233. ((UWORD)ALM_OVR_CNT_VAL) \
  234. }
  235. #define I2CuwAlamOVolV \
  236. { \
  237. ((UWORD)ALM_OVR_VLT_LVL1_VAL) \
  238. }
  239. #define I2CuwAlamUVolV \
  240. { \
  241. ((UWORD)ALM_UNDR_VLT_LVL1_VAL) \
  242. }
  243. #define I2CuwAlamOverSpdRpm \
  244. { \
  245. ((UWORD)ALM_OVR_SPD_VAL) \
  246. }
  247. #define I2CuwAlamOverHeatCe \
  248. { \
  249. ((UWORD)ALM_IPM_OVR_HEAT_VAL) \
  250. }
  251. #define I2CuwAlamRecHeatCe \
  252. { \
  253. ((UWORD)ALM_IPM_OVR_HEAT_REC_VAL) \
  254. }
  255. #define I2CuwPwrLimitStartCe \
  256. { \
  257. ((UWORD)PWRLIM_START_THRESHOLD_TEMP) \
  258. }
  259. #define I2CuwAlamMotorOverHeatCe \
  260. { \
  261. ((UWORD)ALM_MOTOR_OVR_HEAT_VAL) \
  262. }
  263. #define I2CuwAlamMotorRecHeatCe \
  264. { \
  265. ((UWORD)ALM_MOTOR_OVR_HEAT_REC_VAL) \
  266. }
  267. #define I2CuwPwrLimitMotorStartCe \
  268. { \
  269. ((UWORD)PWRLIM_START_THRESHOLD_MOTOR_TEMP) \
  270. }
  271. #define I2CMControlPara \
  272. { \
  273. I2CParaFirstSetFlg,I2CSpiOffsetFirstSetFlg,I2CswSPIPosOffsetOrigin, I2CswSPIPosOffsetNow, I2CuwIPeakMaxA, I2CuwAlamOCurA, I2CuwAlamOVolV, I2CuwAlamUVolV, I2CuwAlamOverSpdRpm, \
  274. I2CuwAlamOverHeatCe, I2CuwAlamRecHeatCe, I2CuwPwrLimitStartCe, I2CuwAlamMotorOverHeatCe, I2CuwAlamMotorRecHeatCe, I2CuwPwrLimitMotorStartCe, I2Creserve, I2Creserve, I2Creserve \
  275. }
  276. /*Sensor Para*/
  277. #define I2CuwTorSensorOffsetOrigin \
  278. { \
  279. 372 \
  280. }
  281. #define I2CuwTorSensorOffsetNow1 \
  282. { \
  283. 0 \
  284. }
  285. #define I2CuwTorSensorOffsetNow2 \
  286. { \
  287. 0 \
  288. }
  289. #define I2CuwTorSensorOffsetNow3 \
  290. { \
  291. 0 \
  292. }
  293. #define I2CuwTorSensorOffsetNow4 \
  294. { \
  295. 0 \
  296. }
  297. #define I2CuwBikeTorMaxNm \
  298. { \
  299. 850 \
  300. }
  301. #define I2CuwBikeTor1StepRealNm \
  302. { \
  303. 200 \
  304. }
  305. #define I2CuwBikeTor1StepADC \
  306. { \
  307. 838 \
  308. }
  309. #define I2CuwBikeTor2StepRealNm \
  310. { \
  311. 400 \
  312. }
  313. #define I2CuwBikeTor2StepADC \
  314. { \
  315. 1303 \
  316. }
  317. #define I2CuwBikeTor3StepRealNm \
  318. { \
  319. 600 \
  320. }
  321. #define I2CuwBikeTor3StepADC \
  322. { \
  323. 1769 \
  324. }
  325. #define I2CuwBikeTor4StepRealNm \
  326. { \
  327. 800 \
  328. }
  329. #define I2CuwBikeTor4StepADC \
  330. { \
  331. 2234 \
  332. }
  333. #define I2CuwCadSensorPulseNm \
  334. { \
  335. TORQUE_NUMBERS_PULSES \
  336. }
  337. #define I2CuwBikeSpdSensorPulseNm \
  338. { \
  339. BIKESPEED_NUMBERS_PULSES \
  340. }
  341. #define I2CuwCad_SensorPulseNm \
  342. { \
  343. CADENCE_NUMBERS_PULSES \
  344. }
  345. #define I2CSensorPara \
  346. { \
  347. I2CuwTorSensorOffsetOrigin, I2CuwTorSensorOffsetNow1, I2CuwTorSensorOffsetNow2, I2CuwTorSensorOffsetNow3, I2CuwTorSensorOffsetNow4, \
  348. I2CuwBikeTorMaxNm, I2CuwBikeTor1StepRealNm, I2CuwBikeTor1StepADC, I2CuwBikeTor2StepRealNm, I2CuwBikeTor2StepADC, \
  349. I2CuwBikeTor3StepRealNm, I2CuwBikeTor3StepADC, I2CuwBikeTor4StepRealNm, I2CuwBikeTor4StepADC, I2CuwCadSensorPulseNm, \
  350. I2CuwBikeSpdSensorPulseNm, I2CuwCad_SensorPulseNm, I2Creserve, I2Creserve, I2Creserve \
  351. }
  352. /*Assist Para*/
  353. #define I2CswStartupGain \
  354. { \
  355. 8192 \
  356. }
  357. #define I2CswStartcruiseGain \
  358. { \
  359. 4096 \
  360. }
  361. #define I2CswNmAssistChangeNum \
  362. { \
  363. 0 \
  364. }
  365. #define I2CswG1AssistCoefaH \
  366. { \
  367. 0 \
  368. }
  369. #define I2CswG1AssistCoefaL \
  370. { \
  371. 0 \
  372. }
  373. #define I2CswG1AssistCoefbH \
  374. { \
  375. 0 \
  376. }
  377. #define I2CswG1AssistCoefbL \
  378. { \
  379. 0 \
  380. }
  381. #define I2CswG1AssistCoefcH \
  382. { \
  383. 0 \
  384. }
  385. #define I2CswG1AssistCoefcL \
  386. { \
  387. 0 \
  388. }
  389. #define I2CswG2AssistCoefaH \
  390. { \
  391. 0 \
  392. }
  393. #define I2CswG2AssistCoefaL \
  394. { \
  395. 0 \
  396. }
  397. #define I2CswG2AssistCoefbH \
  398. { \
  399. 0 \
  400. }
  401. #define I2CswG2AssistCoefbL \
  402. { \
  403. 0 \
  404. }
  405. #define I2CswG2AssistCoefcH \
  406. { \
  407. 0 \
  408. }
  409. #define I2CswG2AssistCoefcL \
  410. { \
  411. 0 \
  412. }
  413. #define I2CswG3AssistCoefaH \
  414. { \
  415. 0 \
  416. }
  417. #define I2CswG3AssistCoefaL \
  418. { \
  419. 0 \
  420. }
  421. #define I2CswG3AssistCoefbH \
  422. { \
  423. 0 \
  424. }
  425. #define I2CswG3AssistCoefbL \
  426. { \
  427. 0 \
  428. }
  429. #define I2CswG3AssistCoefcH \
  430. { \
  431. 0 \
  432. }
  433. #define I2CswG3AssistCoefcL \
  434. { \
  435. 0 \
  436. }
  437. #define I2CswG4AssistCoefaH \
  438. { \
  439. 0 \
  440. }
  441. #define I2CswG4AssistCoefaL \
  442. { \
  443. 0 \
  444. }
  445. #define I2CswG4AssistCoefbH \
  446. { \
  447. 0 \
  448. }
  449. #define I2CswG4AssistCoefbL \
  450. { \
  451. 0 \
  452. }
  453. #define I2CswG4AssistCoefcH \
  454. { \
  455. 0 \
  456. }
  457. #define I2CswG4AssistCoefcL \
  458. { \
  459. 0 \
  460. }
  461. #define I2CswG5AssistCoefaH \
  462. { \
  463. 0 \
  464. }
  465. #define I2CswG5AssistCoefaL \
  466. { \
  467. 0 \
  468. }
  469. #define I2CswG5AssistCoefbH \
  470. { \
  471. 0 \
  472. }
  473. #define I2CswG5AssistCoefbL \
  474. { \
  475. 0 \
  476. }
  477. #define I2CswG5AssistCoefcH \
  478. { \
  479. 0 \
  480. }
  481. #define I2CswG5AssistCoefcL \
  482. { \
  483. 0 \
  484. }
  485. #define I2CswCadAssistCoefa \
  486. { \
  487. 0 \
  488. }
  489. #define I2CswCadAssistCoefb \
  490. { \
  491. 0 \
  492. }
  493. #define I2CswCadAssistCoefc \
  494. { \
  495. 0 \
  496. }
  497. #define I2CuwAssistStartNm \
  498. { \
  499. 80 \
  500. }
  501. #define I2CuwAssistStopNm \
  502. { \
  503. 30 \
  504. }
  505. #define I2CuwStartUpGainStep \
  506. { \
  507. 4 \
  508. }
  509. #define I2CuwStartUpCadNm \
  510. { \
  511. VolLimCtrKiStep \
  512. }
  513. #define I2CuwTorLPFCadNm \
  514. { \
  515. 38 \
  516. }
  517. #define I2CuwSpeedAssistSpdRpm \
  518. { \
  519. VolLimCtrKp \
  520. }
  521. #define I2CuwSpeedAssistIMaxA \
  522. { \
  523. VolLimCtrKi \
  524. }
  525. #define I2CuwAssistLimitBikeSpdStart \
  526. { \
  527. BIKE_SPEED_IQLIMIT_THRESHOLD1 \
  528. }
  529. #define I2CuwAssistLimitBikeSpdStop \
  530. { \
  531. BIKE_SPEED_IQLIMIT_THRESHOLD2 \
  532. }
  533. #define I2CuwCadenceAssistWeight \
  534. { \
  535. 50 \
  536. }
  537. #define I2CuwCadenceAssKp \
  538. { \
  539. ASS_PID_KP \
  540. }
  541. #define I2CuwCadenceVolStep \
  542. { \
  543. ASS_VOL_STEP_MAX \
  544. }
  545. #define I2CuwCadenceVolDecStep \
  546. { \
  547. ((UWORD)ASS_VOL_DEC_STEP) \
  548. }
  549. #define I2CuwCadenceCurStep \
  550. { \
  551. ((UWORD)ASS_CUR_STEP) \
  552. }
  553. #define I2CuwCadenceMaxRpm \
  554. { \
  555. ((UWORD)ASS_CAD_MAX_RPM) \
  556. }
  557. #define I2CAssistPara \
  558. { \
  559. I2CswStartupGain, I2CswStartcruiseGain, I2CuwAssistStartNm, I2CuwAssistStopNm, I2CuwStartUpGainStep, I2CuwStartUpCadNm, I2CuwTorLPFCadNm, \
  560. I2CuwSpeedAssistSpdRpm, I2CuwSpeedAssistIMaxA, I2CuwAssistLimitBikeSpdStart, I2CuwAssistLimitBikeSpdStop, I2CuwCadenceAssistWeight, \
  561. I2CuwCadenceAssKp, I2CuwCadenceVolStep, I2CuwCadenceVolDecStep, I2CuwCadenceCurStep, I2CuwCadenceMaxRpm, I2Creserve, I2Creserve, I2Creserve \
  562. }
  563. // I2CswNmAssistChangeNum,
  564. // I2CswG1AssistCoefaH,I2CswG1AssistCoefaL,I2CswG1AssistCoefbH,I2CswG1AssistCoefbL,I2CswG1AssistCoefcH,I2CswG1AssistCoefcL,\
  565. // I2CswG2AssistCoefaH,I2CswG2AssistCoefaL,I2CswG2AssistCoefbH,I2CswG2AssistCoefbL,I2CswG2AssistCoefcH,I2CswG2AssistCoefcL,\
  566. // I2CswG3AssistCoefaH,I2CswG3AssistCoefaL,I2CswG3AssistCoefbH,I2CswG3AssistCoefbL,I2CswG3AssistCoefcH,I2CswG3AssistCoefcL,\
  567. // I2CswG4AssistCoefaH,I2CswG4AssistCoefaL,I2CswG4AssistCoefbH,I2CswG4AssistCoefbL,I2CswG4AssistCoefcH,I2CswG4AssistCoefcL,\
  568. // I2CswG5AssistCoefaH,I2CswG5AssistCoefaL,I2CswG5AssistCoefbH,I2CswG5AssistCoefbL,I2CswG5AssistCoefcH,I2CswG5AssistCoefcL,\
  569. // I2CswCadAssistCoefa,I2CswCadAssistCoefb,I2CswCadAssistCoefc,
  570. /*History Parameters*/
  571. #define I2CuwAssModSelect \
  572. { \
  573. 0 \
  574. }
  575. #define I2CuwOpenTimes \
  576. { \
  577. 0 \
  578. }
  579. #define I2CuwUsedTimeH \
  580. { \
  581. 0 \
  582. }
  583. #define I2CuwUsedTimeL \
  584. { \
  585. 0 \
  586. }
  587. #define I2CuwNTCTempMaxCe \
  588. { \
  589. 0 \
  590. }
  591. #define I2CuwNTCTempMinCe \
  592. { \
  593. 100 \
  594. }
  595. #define I2CuwAlamHOcurTimes \
  596. { \
  597. 0 \
  598. }
  599. #define I2CuwAlamSOcurTimes \
  600. { \
  601. 0 \
  602. }
  603. #define I2CuwAlamOHeatTimes \
  604. { \
  605. 0 \
  606. }
  607. #define I2CuwAlamRotorLockTimes \
  608. { \
  609. 0 \
  610. }
  611. #define I2CuwAlamPhsLossTimes \
  612. { \
  613. 0 \
  614. }
  615. #define I2CuwAlamOVolTimes \
  616. { \
  617. 0 \
  618. }
  619. #define I2CuwAlamUVolTimes \
  620. { \
  621. 0 \
  622. }
  623. #define I2CuwAlamComOTimeTimes \
  624. { \
  625. 0 \
  626. }
  627. #define I2CuwG1AvgPwrConsumption \
  628. { \
  629. 100 \
  630. }
  631. #define I2CuwG2AvgPwrConsumption \
  632. { \
  633. 160 \
  634. }
  635. #define I2CuwG3AvgPwrConsumption \
  636. { \
  637. 190 \
  638. }
  639. #define I2CuwG4AvgPwrConsumption \
  640. { \
  641. 270 \
  642. }
  643. #define I2CuwG5AvgPwrConsumption \
  644. { \
  645. 180 \
  646. }
  647. #define I2CuwODOTripH \
  648. { \
  649. 0 \
  650. }
  651. #define I2CuwODOTripL \
  652. { \
  653. 0 \
  654. }
  655. #define I2CuwODOTimeH \
  656. { \
  657. 0 \
  658. }
  659. #define I2CuwODOTimeL \
  660. { \
  661. 0 \
  662. }
  663. #define I2CuwTripSumH \
  664. { \
  665. 0 \
  666. }
  667. #define I2CuwTripSumL \
  668. { \
  669. 0 \
  670. }
  671. #define I2CuwTripSumTimeH \
  672. { \
  673. 0 \
  674. }
  675. #define I2CuwTripSumTimeL \
  676. { \
  677. 0 \
  678. }
  679. #define I2CuwTorSensorAlamTimes \
  680. { \
  681. 0 \
  682. }
  683. #define I2CuwCadSensorAlamTimes \
  684. { \
  685. 0 \
  686. }
  687. #define I2CuwBikeSpdSensorAlamTimes \
  688. { \
  689. 0 \
  690. }
  691. #define I2CuwPosSensorAlamTimes \
  692. { \
  693. 0 \
  694. }
  695. #define I2CHistoryPara \
  696. { \
  697. I2CuwAssModSelect, I2CuwOpenTimes, I2CuwUsedTimeH, I2CuwUsedTimeL, I2CuwNTCTempMaxCe, I2CuwNTCTempMinCe, I2CuwAlamHOcurTimes, \
  698. I2CuwAlamSOcurTimes, I2CuwAlamOHeatTimes, I2CuwAlamRotorLockTimes, I2CuwAlamPhsLossTimes, I2CuwAlamOVolTimes, I2CuwAlamUVolTimes, \
  699. I2CuwAlamComOTimeTimes, I2CuwG1AvgPwrConsumption, I2CuwG2AvgPwrConsumption, I2CuwG3AvgPwrConsumption, I2CuwG4AvgPwrConsumption, \
  700. I2CuwG5AvgPwrConsumption, I2CuwODOTripH, I2CuwODOTripL, I2CuwODOTimeH, I2CuwODOTimeL, I2CuwTripSumH, I2CuwTripSumL, I2CuwTripSumTimeH, \
  701. I2CuwTripSumTimeL, I2CuwTorSensorAlamTimes, I2CuwCadSensorAlamTimes, I2CuwBikeSpdSensorAlamTimes, I2CuwPosSensorAlamTimes, I2Creserve, \
  702. I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve, I2Creserve \
  703. }
  704. /* SYSTEM2 PARA */
  705. #define SYSPARA2 \
  706. { \
  707. I2CMotorPara, I2CBikePara, I2CMControlPara, I2CSensorPara, I2CAssistPara, I2CHistoryPara, 0 \
  708. }
  709. /************************************************************************
  710. TypeDefs & Structure defines (N/A)
  711. *************************************************************************/
  712. typedef struct
  713. {
  714. UBYTE ubTX1NPages;
  715. UBYTE ubTX1NSingleBytes;
  716. } I2C_TX_COF;
  717. typedef struct
  718. {
  719. UBYTE ubSlaveAddr;
  720. UBYTE ubPageCnt;
  721. UBYTE ubTX1Cnt;
  722. UBYTE ubWriteAddr;
  723. BOOL blTX1FinishFlg;
  724. BOOL blTX2FinishFlg;
  725. BOOL blInitFinishFlg;
  726. } I2C_TX_OUT;
  727. typedef struct
  728. {
  729. BOOL blMotorParaFltFlg;
  730. BOOL blBikeParaFltFlg;
  731. BOOL blMControlParaFltFlg;
  732. BOOL blSensorParaFltFlg;
  733. BOOL blAssistParaFltFlg;
  734. BOOL blHistoryParaFltFlg;
  735. BOOL ReadFinishFlg;
  736. } I2C_RXCRC_OUT;
  737. typedef struct
  738. {
  739. // UWORD uwDefault1;
  740. UWORD uwReal;
  741. // UWORD uwMin;
  742. // UWORD uwMax;
  743. // UWORD uwUnit;
  744. } UWORD_VALUE;
  745. typedef struct
  746. {
  747. // SWORD swDefault1;
  748. SWORD swReal;
  749. // SWORD swMin;
  750. // SWORD swMax;
  751. // UWORD uwUnit;
  752. } SWORD_VALUE;
  753. typedef struct
  754. {
  755. UWORD_VALUE uwPolePairs;
  756. UWORD_VALUE uwRsmOhm;
  757. UWORD_VALUE uwLduH;
  758. UWORD_VALUE uwLquH;
  759. UWORD_VALUE uwFluxmWb;
  760. UWORD_VALUE uwIdMaxA;
  761. UWORD_VALUE uwIdMinA;
  762. UWORD_VALUE uwRSpdRpm;
  763. UWORD_VALUE uwRPwrWt;
  764. UWORD_VALUE uwRCurA;
  765. UWORD_VALUE uwRVolV;
  766. UWORD_VALUE uwJD;
  767. UWORD_VALUE uwTorMaxNm;
  768. UWORD_VALUE uwReserve1;
  769. UWORD_VALUE uwReserve2;
  770. UWORD_VALUE uwReserve3;
  771. UWORD_VALUE uwReserve4;
  772. UWORD_VALUE uwReserve5;
  773. UWORD_VALUE uwRsserve6;
  774. } MOTOR_PARAMETER;
  775. typedef struct
  776. {
  777. UWORD_VALUE uwWheelPerimeter;
  778. SWORD_VALUE swDeltPerimeter;
  779. UWORD_VALUE uwMechRationMotor;
  780. UWORD_VALUE uwThrottleMaxSpdKmH;
  781. UWORD_VALUE uwCartSpdKmH;
  782. UWORD_VALUE uwNmFrontChainring;
  783. UWORD_VALUE uwNmBackChainring;
  784. UWORD_VALUE uwAssistSelect1;
  785. UWORD_VALUE uwAssistSelect2;
  786. UWORD_VALUE uwLightConfig;
  787. UWORD_VALUE uwStartMode;
  788. UWORD_VALUE uwAutoPowerOffTime;
  789. UWORD_VALUE uwReserve4;
  790. } BIKE_PARAMETER;
  791. typedef struct
  792. {
  793. UWORD_VALUE ParaFirstSetFlg;
  794. UWORD_VALUE SpiOffsetFirstSetFlg;
  795. UWORD_VALUE uwSPIPosOffsetOrigin;
  796. UWORD_VALUE uwSPIPosOffsetNow;
  797. UWORD_VALUE uwIPeakMaxA;
  798. UWORD_VALUE uwAlamOCurA;
  799. UWORD_VALUE uwAlamOVolV;
  800. UWORD_VALUE uwAlamUVolV;
  801. UWORD_VALUE uwAlamOverSpdRpm;
  802. UWORD_VALUE uwAlamOverHeatCe;
  803. UWORD_VALUE uwAlamRecHeatCe;
  804. UWORD_VALUE uwPwrLimitStartCe;
  805. UWORD_VALUE uwAlamMotorOverHeatCe;
  806. UWORD_VALUE uwAlamMotorRecHeatCe;
  807. UWORD_VALUE uwPwrLimitMotorStartCe;
  808. UWORD_VALUE uwReserve1;
  809. UWORD_VALUE uwReserve2;
  810. UWORD_VALUE uwReserve3;
  811. } MControl_PARAMETER;
  812. typedef struct
  813. {
  814. UWORD_VALUE uwTorSensorOffsetOrigin;
  815. UWORD_VALUE uwTorSensorOffsetNow1;
  816. UWORD_VALUE uwTorSensorOffsetNow2;
  817. UWORD_VALUE uwTorSensorOffsetNow3;
  818. UWORD_VALUE uwTorSensorOffsetNow4;
  819. UWORD_VALUE uwBikeTorMaxNm;
  820. UWORD_VALUE uwBikeTor1StepRealNm;
  821. UWORD_VALUE uwBikeTor1StepADC;
  822. UWORD_VALUE uwBikeTor2StepRealNm;
  823. UWORD_VALUE uwBikeTor2StepADC;
  824. UWORD_VALUE uwBikeTor3StepRealNm;
  825. UWORD_VALUE uwBikeTor3StepADC;
  826. UWORD_VALUE uwBikeTor4StepRealNm;
  827. UWORD_VALUE uwBikeTor4StepADC;
  828. UWORD_VALUE uwTorque_SensorPulseNm;//力矩脉冲
  829. UWORD_VALUE uwBikeSpdSensorPulseNm;
  830. UWORD_VALUE uwCad_SensorPulseNm;//uwCad_SensorPulseNm;
  831. UWORD_VALUE uwReserve2;
  832. UWORD_VALUE uwReserve3;
  833. UWORD_VALUE uwReserve4;
  834. } Sensor_PARAMETER;
  835. typedef struct
  836. {
  837. UWORD_VALUE uwStartupGain;
  838. UWORD_VALUE uwStartcruiseGain;
  839. UWORD_VALUE uwAssistStartNm;
  840. UWORD_VALUE uwAssistStopNm;
  841. UWORD_VALUE uwStartUpGainStep;
  842. UWORD_VALUE uwStartUpCadNm;
  843. UWORD_VALUE uwTorLPFCadNm;
  844. UWORD_VALUE uwSpeedAssistSpdRpm;
  845. UWORD_VALUE uwSpeedAssistIMaxA;
  846. UWORD_VALUE uwAssistLimitBikeSpdStart;
  847. UWORD_VALUE uwAssistLimitBikeSpdStop;
  848. UWORD_VALUE uwCadenceAssistWeight;
  849. UWORD_VALUE uwCadenceAssKp;
  850. SWORD_VALUE swCadenceVolStep;
  851. SWORD_VALUE swCadenceVolDecStep;
  852. SWORD_VALUE swCadenceCurStep;
  853. UWORD_VALUE uwMaxCadRpm;
  854. UWORD_VALUE uwReserve2;
  855. UWORD_VALUE uwReserve3;
  856. UWORD_VALUE uwReserve4;
  857. } Assist_PARAMETER;
  858. typedef struct
  859. {
  860. UWORD_VALUE uwAssModSelect;
  861. UWORD_VALUE uwOpenTimes;
  862. UWORD_VALUE uwUsedTimeH;
  863. UWORD_VALUE uwUsedTimeL;
  864. SWORD_VALUE swNTCTempMaxCe;
  865. SWORD_VALUE swNTCTempMinCe;
  866. UWORD_VALUE uwAlamHOcurTimes;
  867. UWORD_VALUE uwAlamSOcurTimes;
  868. UWORD_VALUE uwAlamOHeatTimes;
  869. UWORD_VALUE uwAlamRotorLockTimes;
  870. UWORD_VALUE uwAlamPhsLossTimes;
  871. UWORD_VALUE uwAlamOVolTimes;
  872. UWORD_VALUE uwAlamUVolTimes;
  873. UWORD_VALUE uwAlamComOTimeTimes;
  874. UWORD_VALUE uwG1AvgPwrConsumption;
  875. UWORD_VALUE uwG2AvgPwrConsumption;
  876. UWORD_VALUE uwG3AvgPwrConsumption;
  877. UWORD_VALUE uwG4AvgPwrConsumption;
  878. UWORD_VALUE uwG5AvgPwrConsumption;
  879. UWORD_VALUE uwODOTripH;
  880. UWORD_VALUE uwODOTripL;
  881. UWORD_VALUE uwODOTimeH;
  882. UWORD_VALUE uwODOTimeL;
  883. UWORD_VALUE uwTripSumH;
  884. UWORD_VALUE uwTripSumL;
  885. UWORD_VALUE uwTripSumTimeH;
  886. UWORD_VALUE uwTripSumTimeL;
  887. UWORD_VALUE uwTorSensorAlamTimes;
  888. UWORD_VALUE uwCadSensorAlamTimes;
  889. UWORD_VALUE uwBikeSpdSensorAlamTimes;
  890. UWORD_VALUE uwPosSensorAlamTimes;
  891. UWORD_VALUE uwReserve1;
  892. UWORD_VALUE uwReserve2;
  893. UWORD_VALUE uwReserve3;
  894. UWORD_VALUE uwReserve4;
  895. UWORD_VALUE uwReserve5;
  896. UWORD_VALUE uwReserve6;
  897. UWORD_VALUE uwReserve7;
  898. UWORD_VALUE uwReserve8;
  899. UWORD uwCRC;
  900. } History_PARAMETER;
  901. /**
  902. * @brief MC生产信息,占用空间32bytes
  903. *
  904. */
  905. typedef struct
  906. {
  907. char Manufacturer[8]; ///>生产厂商 ASCII,0x2E结束,无效填充0x20
  908. char MacAddr[8]; ///>生产地 ASCII,0x2E结束,无效填充0x20
  909. char MacDate[8]; ///>生产日期 ASCII,0x2E结束,无效填充0x20
  910. char MacBrand[8];
  911. } MC_MacInfo_Struct_t;
  912. /**
  913. * @brief MC生产信息,占用空间32bytes
  914. *
  915. */
  916. typedef struct
  917. {
  918. char CustomASCII1[16]; ///>生产厂商 ASCII,0x2E结束,无效填充0x20
  919. char CustomASCII2[16]; ///>生产地 ASCII,0x2E结束,无效填充0x20
  920. char CustomASCII3[16]; ///>生产日期 ASCII,0x2E结束,无效填充0x20
  921. } MC_RS_ASCII_Struct_t;
  922. typedef struct
  923. {
  924. UWORD uwSaveFlg;
  925. UWORD uwEEFirstDefaultSetFlg;
  926. UWORD uwSPIOffsetFirstSetFlg;
  927. UWORD uwTestParaSaveFlg;
  928. UWORD RunModelSelect;
  929. UWORD ThetaGetModelSelect;
  930. UWORD CurrentSampleModelSelect;
  931. UWORD RotateDirectionSelect;
  932. UWORD uwInitPosCurAmp;
  933. UWORD uwVFControlVolAmp;
  934. UWORD uwIFControlCurAmp;
  935. UWORD uwVFIFTargetFreHz;
  936. UWORD uwSpeedLoopAccRate;
  937. UWORD uwSpeedLoopDecRate;
  938. UWORD uwSpeedLoopBandWidthHz;
  939. UWORD uwSpeedLoopCoefM;
  940. UWORD uwCuerrentLoopBandWidthHz;
  941. UWORD uwCurrentLoopCoefM;
  942. UWORD uwFluxObsBandWidthHz;
  943. UWORD uwFluxObsCoefM;
  944. UWORD uwThetaObsPLLBandWidthHz;
  945. UWORD uwThetaObsPLLCoefM;
  946. UWORD uwJm;
  947. UWORD uwPWMMaxDuty;
  948. UWORD uwPWM7to5Duty;
  949. UWORD uwPwrLimit;
  950. UWORD uwPwrLimitError;
  951. UWORD uwPwrLimitKp;
  952. UWORD uwPwrLimitKi;
  953. UWORD reserve1;
  954. UWORD reserve2;
  955. UWORD reserve3;
  956. UWORD reserve4;
  957. UWORD reserve5;
  958. UWORD reserve6;
  959. UWORD reserve7;
  960. UWORD reserve8;
  961. } UPC_TestParaInfo_Struct_t;
  962. // UBYTE ubMotorVersion[16];
  963. // UBYTE ubSN[16];
  964. // MC_MacInfo_Struct_t ubProdInfo;
  965. typedef struct
  966. {
  967. SLONG slTorqAssGain[15][4];
  968. SLONG slCadAssGain[5][4];
  969. MC_RS_ASCII_Struct_t ubRsASSCII;
  970. UPC_TestParaInfo_Struct_t stTestParaInfo;
  971. } FLASH_PARA_TYPE;
  972. typedef struct
  973. {
  974. UWORD uwTEMP_RES0;//0度电阻值
  975. UWORD uwTEMP_RES1;//25度电阻值
  976. UWORD uwTEMP_RES2;//50度电阻值
  977. UWORD uwTEMP_RES3;//75度电阻值
  978. UWORD uwTEMP_RES4;//100度电阻值
  979. UWORD uwTEMP_RES5;//125度电阻值
  980. UWORD uwTEMP_RES6;//150度电阻值
  981. }EEP_RES_Struct;
  982. typedef struct
  983. {
  984. EEP_RES_Struct EEP_MOSA;//25度下MOS内阻
  985. EEP_RES_Struct EEP_MOSB;
  986. EEP_RES_Struct EEP_MOSC;
  987. UWORD EEP_K50; //系数1
  988. UWORD EEP_K75;
  989. UWORD EEP_K100;
  990. UWORD EEP_K125;
  991. UWORD EEP_K150;
  992. UWORD reserve1;
  993. UWORD reserve2;
  994. UWORD reserve3;
  995. UWORD reserve4;
  996. UWORD reserve5;
  997. UWORD reserve6;
  998. UWORD reserve7;
  999. UWORD reserve8;
  1000. UWORD uwCRC;
  1001. }MOSEEPROM_Struct;
  1002. typedef struct
  1003. {
  1004. MOTOR_PARAMETER stMotorPara;
  1005. BIKE_PARAMETER stBikePara;
  1006. MControl_PARAMETER stMControlPara;
  1007. Sensor_PARAMETER stSensorPara;
  1008. Assist_PARAMETER stAssistPara;
  1009. FLASH_PARA_TYPE flash_stPara;
  1010. MOSEEPROM_Struct EepromMosPara;
  1011. UWORD uwCRC;
  1012. } SYSTEM_PARAMETER2;
  1013. typedef struct
  1014. {
  1015. UBYTE ubMotorVersion[16];
  1016. UBYTE ubSN[16];
  1017. MC_MacInfo_Struct_t ubProdInfo;
  1018. UWORD uwCRC;
  1019. }PRODUCT_INFO_Struct;
  1020. /************************************************************************
  1021. Constant Table
  1022. *************************************************************************/
  1023. extern MC_MacInfo_Struct_t MC_MacInfo;
  1024. extern MC_RS_ASCII_Struct_t MC_RsASSCII;
  1025. /************************************************************************
  1026. Exported Variables
  1027. *************************************************************************/
  1028. #ifdef _I2C_MASTER_C_
  1029. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2 ;//= SYSPARA2;
  1030. _I2C_MASTER_EXT PRODUCT_INFO_Struct Productionpara;
  1031. //_I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1032. //_I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1033. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
  1034. // _I2C_MASTER_EXT MOSEEPROM_Struct EepromMosPara;
  1035. //
  1036. //_I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RERX1_TIMES][I2C1_RX_DMA_NUM];
  1037. //_I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1038. //_I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1039. //_I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1040. //_I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1041. //_I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1042. // _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1043. //_I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1044. //_I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1045. //
  1046. //_I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer = I2C_ubWriteBuffer;
  1047. //_I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer = I2C_ubHistoyWriteBuffer;
  1048. //_I2C_MASTER_EXT UBYTE *I2C_pReadBuffer = I2C_ubReadBuffer[0];
  1049. //
  1050. //_I2C_MASTER_EXT BOOL I2C_TimeOutFlg = FALSE;
  1051. //_I2C_MASTER_EXT BOOL I2C_DMA_TimeOutFlg = FALSE;
  1052. //_I2C_MASTER_EXT BOOL I2C_DMA_FltFlg = FALSE;
  1053. //_I2C_MASTER_EXT UBYTE I2C_TimeOutCnt = 0;
  1054. //_I2C_MASTER_EXT BOOL I2C_EEFltFlg = FALSE;
  1055. #else
  1056. _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2;
  1057. _I2C_MASTER_EXT PRODUCT_INFO_Struct Productionpara;
  1058. //_I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
  1059. //_I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
  1060. _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut;
  1061. // _I2C_MASTER_EXT MOSEEPROM_Struct EepromMosPara;
  1062. //
  1063. //_I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RERX1_TIMES][I2C1_RX_DMA_NUM];
  1064. //_I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
  1065. //_I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
  1066. //_I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
  1067. //_I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
  1068. //_I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
  1069. //_I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
  1070. //_I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
  1071. //_I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
  1072. //
  1073. //_I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer;
  1074. //_I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer;
  1075. //_I2C_MASTER_EXT UBYTE *I2C_pReadBuffer;
  1076. //
  1077. //_I2C_MASTER_EXT BOOL I2C_TimeOutFlg;
  1078. //_I2C_MASTER_EXT BOOL I2C_DMA_TimeOutFlg;
  1079. //_I2C_MASTER_EXT BOOL I2C_DMA_FltFlg;
  1080. //_I2C_MASTER_EXT UBYTE I2C_TimeOutCnt;
  1081. //_I2C_MASTER_EXT BOOL I2C_EEFltFlg;
  1082. #endif
  1083. /************************************************************************
  1084. Exported Function Call Prototypes
  1085. *************************************************************************/
  1086. //#ifdef _I2C_MASTER_C_
  1087. //
  1088. //_I2C_MASTER_EXT void i2c_voReadTest(void);
  1089. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1090. //_I2C_MASTER_EXT void i2c_voBufferReadTest(void);
  1091. //
  1092. //_I2C_MASTER_EXT void i2c_voWaitEEReady(void);
  1093. //_I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
  1094. //_I2C_MASTER_EXT void i2c_voInfoWriteBuffer(void);
  1095. //_I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1096. //_I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1097. //_I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE WriteAddr, UBYTE NBytesToWrite);
  1098. //_I2C_MASTER_EXT void i2c_voDefaultWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1099. //_I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1100. //_I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1101. //_I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
  1102. //_I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1103. //_I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
  1104. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1105. //#else
  1106. //_I2C_MASTER_EXT void i2c_voReadTest(void);
  1107. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1108. //_I2C_MASTER_EXT void i2c_voBufferReadTest(void);
  1109. //
  1110. //_I2C_MASTER_EXT void i2c_voWaitEEReady(void);
  1111. //_I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
  1112. //_I2C_MASTER_EXT void i2c_voDefaultWriteBuffer(void);
  1113. //_I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
  1114. //_I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
  1115. //_I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE WriteAddr, UBYTE NBytesToWrite);
  1116. //_I2C_MASTER_EXT void i2c_voInfoWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1117. //_I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
  1118. //_I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
  1119. //_I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
  1120. //_I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
  1121. //_I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
  1122. //_I2C_MASTER_EXT void i2c_voWriteTest(void);
  1123. //
  1124. //#endif
  1125. /************************************************************************
  1126. Flag Define (N/A)
  1127. *************************************************************************/
  1128. #endif
  1129. /************************************************************************
  1130. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  1131. All rights reserved.
  1132. *************************************************************************
  1133. End of this File (EOF)!
  1134. Do not put anything after this part!
  1135. *************************************************************************/