• 大小: 656KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签: 英飞凌BMS  

资源简介

基于英飞凌16位单片机,实现BMS解决方案C语言程序源码及使用说明

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “MemoryXC8.h“
#include “Routines.h“


//********************************************************
//          FLASH ROUTINE
//********************************************************                
void FlashCalculateAdr( SlaveData *pSlaveData )
{
   unsigned int idata SectorAdr;
   char idata WL WL_Start;
   
   // define WL
   if(*(unsigned long code *)FlashB400 != 0 && *(unsigned long code *)FlashB7E0 == 0) 
        // second sector
        WL_Start=32;  
   else // first sector
        WL_Start= 0;  
   
   // Wl = Wordline = 32 Byte
   for(WL=WL_Start; WL<((FlashB800-FlashB000)/sizeof(WLBuf))+1; WL++)
   {             
     // calculate start address from 0xB000...0xB3E0 or 0xB400....0xB800
     SectorAdr = FlashB000 + (sizeof(WLBuf) * WL);
     // search the empty line     
     if( *(unsigned long code *)SectorAdr == 0 ) 
       break; 
   }
  
   // check address
   if(SectorAdr == FlashB000 || SectorAdr == FlashB800)
   {  
     // next free adress
     pSlaveData->FlashData.NextSectorAdr    = FlashB000;
     // current adress
     pSlaveData->FlashData.CurrentSectorAdr = FlashB7E0;     
   }     
   else
   {          
     // next free adress
     pSlaveData->FlashData.NextSectorAdr    = SectorAdr;
     // current address
     pSlaveData->FlashData.CurrentSectorAdr = SectorAdr - sizeof(WLBuf);
   }
   
   printf(“read from FlashAdr:0x%x\n“ (unsigned int)pSlaveData->FlashData.CurrentSectorAdr);          
   printf(“-> next empty FlashAdr:0x%x\n“ (unsigned int)pSlaveData->FlashData.NextSectorAdr);          
}


//********************************************************
//          FLASH ROUTINE
//********************************************************                
void FlashErrors( SlaveData *pSlaveData )
{
   char idata SectorNo;
   unsigned char xdata *pAdr = NULL;
   static unsigned char FlashValue = 0;

   // only 3 times flash possible
   if( FlashValue <= 2  )
   {
     // calculate sector 0 or 1
     if(pSlaveData->FlashData.NextSectorAdr < FlashB800)  SectorNo = 1;
     if(pSlaveData->FlashData.NextSectorAdr < FlashB400)  SectorNo = 0;

     // which Sector No?
     switch( SectorNo )
     {
       case 0: //******************************************************
      //            address where to save value 0xB000
      //******************************************************     
     
           // fill internal RAM buffer
           LoadXD2WLBuf( (unsigned char xdata *)&pSlaveData->FlashData );
           // program flash
           ProgWL( (unsigned char code *)pSlaveData->FlashData.NextSectorAdr );
           // wait until ready
           while(FlReady(4) == 0);
           
          // new current sector address
          pSlaveData->FlashData.CurrentSectorAdr = pSlaveData->FlashData.NextSectorAdr;
          // new next sector address
         

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .......     19214  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\ADC.C

    .......      3290  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\ADC.H

    .......     28905  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\ADC.LST

    .......     69037  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\ADC.OBJ

    .......     89148  2009-08-12 19:27  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\BM_NewSlave.dav

    .......     86146  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CAN.C

    .......     26619  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CAN.H

    .......    122239  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CAN.LST

    .......    113279  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CAN.OBJ

    .......       562  2009-09-15 17:38  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CAN_INT.LST

    .......     13645  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CC6.C

    .......      4768  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CC6.H

    .......     20102  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CC6.LST

    .......     40844  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\CC6.OBJ

    .......      9270  2009-08-06 12:44  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\Flash.c

    .......       490  2008-12-16 10:49  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\Flash.h

    .......     15073  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\Flash.LST

    .......    152064  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\Flash.OBJ

    .......      7311  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\INT.C

    .......      2775  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\INT.H

    .......     12390  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\INT.LST

    .......     58339  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\INT.OBJ

    .......     10755  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\IO.C

    .......      4270  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\IO.H

    .......     16873  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\IO.LST

    .......     36674  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\IO.OBJ

    .......     18216  2009-08-12 19:23  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\MAIN.H

    .......     58013  2009-09-17 13:09  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\MAIN_own.C

    .......     94564  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\MAIN_own.LST

    .......    366156  2010-03-17 10:20  英飞凌BMS解决方案C语言程序源码及使用说明\BMS - 4-v2\MAIN_own.OBJ

............此处省略44个文件信息

评论

共有 条评论

相关资源