匠迹众包
38人浏览/6人投稿
28天前
待托管赏金
// 2016.12////** DLL for WCH MCU ISP C, VC6.0 **//****************************************//// WCH MCU ISP API V1.0// 江苏沁恒股份有限公司 作者: TECH30 2016.12// 运行环境: Windows Windows 2000 and later// support chip: CH55X//#ifndef _WCH55XISP_DLL_H#define _WCH55XISP_DLL_H#ifdef __cplusplusextern "C" {#endif#define mOFFSET( s, m ) ( (ULONG) & ( ( ( s * ) 0 ) -> m ) ) // 定义获取结构成员相对偏移地址的宏#ifndef max#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) // 较大值#endif#ifndef min#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) // 较小值#endif#define MAX_ISPDEV_NUM 16 //MCU类型#define MCU_CH55X 0#define MCU_CH56X 1#define MCU_CH54X 2#define MCU_CH57X 3#define MCU_CH32F1X 4#define MCU_CH32V1X 5#define MCU_CH58X 6 #define MCU_CH32V3X 7 #define MCU_CH32F2X 8 #define MCU_CH32V2X 9 typedef VOID ( CALLBACK * mPCH55X_USB_NOTIFY_ROUTINE ) ( // 设备事件通知回调程序 ULONG iEventStatus, // 设备事件和当前状态(在下行定义): 0=设备拔出事件, 3=设备插入事件 ULONG DevIndexArray, //插入或移除的设备序号 ULONG DevCnt); //当前设备总数#define InforType_Succ 0#define InforType_Err 1#define InforType_Hit 2typedef VOID ( CALLBACK * mOutputPrint ) ( // 应用层信息输出函数 UCHAR InforType,WCHAR *DataStr);typedef VOID ( CALLBACK * mAppendPrint ) ( // 应用层信息追加输出函数 ULONG LineNo,WCHAR *DataStr);typedef VOID ( CALLBACK * mPCH55X_USB_NOTIFY_ROUTINE ) ( // 设备事件通知回调程序 ULONG iEventStatus, // 设备事件和当前状态(在下行定义): 0=设备拔出事件, 3=设备插入事件 ULONG DevIndexArray, //插入或移除的设备序号 ULONG DevCnt); //当前设备总数#pragma pack(1) //强制将下面#pragma pack(1) ...#pragma pack之间的结构定义为1字节对齐,传送scsi命令要8字节对齐(默认8字节).typedef struct _CHIP_INFOEX { TCHAR ChipName[16]; UINT FlashMaxSize; UINT EepromMaxSize; BOOL IsNetworkDownloadAvailable; BOOL IsUsbDownloadAvailable; BOOL IsSerialDownloadAvailable; UCHAR DeviceType; LIST_ENTRY listEntry; UCHAR ChipId; USHORT EepromStartAddr; TCHAR Introduction[256]; TCHAR IntroductionEn[256];}CHIP_INFOEX, *PCHIP_INFOEX;//ISP下载设备结构信息typedef struct _ISP55XDEVICEINFOR{ ULONG Index; //枚举后的设备序号 UCHAR McuType; //芯片型号 BOOL IsSupportUID; //MCU是否支持获取UID,较早版本不支持UID获取 UCHAR IspVer[4]; //ISP版本 UCHAR IspMcuUID[8]; //MCU唯一ID CHAR PortName[32]; //串口设备名,只有串口下载时才有值 BOOL DevIsOnline; //设备是否连接上该串口,只在串口下载时有用 BOOL IsCoolBoot; //是否是上电进行BOOT。如果不是,则不能修改配置位 UCHAR MacAddr[6]; BOOL IsPreBTV230;}Isp55xDevInforS,///IspOption->IspInterface = 0:USB下载方式时,此函数将执行通过USB搜索ISP下载设备,返回枚举的设备数//IspOption->IspInterface = 1:串口下载方式时,此函数将执行枚举电脑上所有的串口,返回枚举的串口数//获取指定序号设备信息BOOL WINAPI WCH55x_GetIspDeviceInfor(ULONG iIndex, //指定序号设备信息 PIsp55xDevInforS IspDevInfor);//设备信息 //设置ISP下载设置ExBOOL WINAPI WCH55x_SetIspOption(CH55xIspOptionS *IspOption);//ISP选项//获取ISP下载设置BOOL WINAPI WCH55x_GetIspOption(CH55xIspOptionS *IspOption); //ISP选项//USB接口写EEPROM数据BOOL WCH55x_WriteDataFlash(ULONG iIndex, //设备序号 ULONG StartAddr, //起始地址 ULONG *oWriteLen, //写入长度 PUCHAR DataBuf, //数据缓冲区 BOOL bIsErase);//USB接口读EEPROM数据BOOL WCH55x_ReadDataFlash(ULONG iIndex, //设备序号 ULONG StartAddr, //起始地址 ULONG *oReadLen, //写入长度 PUCHAR DataBuf); //数据缓冲区) BOOL WINAPI WCH55xIsp_ReadConfig(ULONG DevI, PUCHAR IapCfgVal, //4字节 PUCHAR IspCfgVal, //4字节 PUCHAR CFlashCfgVal, //4字节 PULONG BootVer, PUCHAR UUID); //取消操作VOID WCH55x_StopOp();//通过USB搜索ISP下载设备,返回枚举的设备数。旧版BTV230,只支持一个设备枚举ULONG WINAPI WCH55x_EnumDevices(Isp55xDevInforS *IspDevInfor, //IspDevInfor:设备信息数组 UCHAR MaxDevCnt, //最大扫描设备数