小小建议

我已向贵司申请了样片,可我无法下载网上的资料。 如果为了等待贵司批准权限就要担误两天时间,相信那是每一个工程师都不愿做的。 方便是一种优势,如果不能提供,那又如何去竞争。 时间是金钱,如果浪费,又如何把握时机。。。。

经过商量,回答如下,主要是希望您能理解。 首先,绝大多数的通用资料网上都可以直接下载,只有特殊资料才需要额外开放权限。 芯片的DataSheet使用说明、应用参考、参考电路都可以直接下载,能够满足于一般应用。 其次,大多数申请额外下载权限都可以在当天处理掉,当天未处理的通常是因为申请者未提供客户信息或者 那些技术资料可能只向购买相关产品方案的用户开放。 再次,各个客户的情况不同,虽然我们的技术资料是免费提供的,但是并非所有的资料和方案都可以 完全开放给我们的任何客户(没办法,免费方案总是优先服务于老客户)。 最后,这个贴子会转给我们的销售人员,我们还应该努力提高响应速度,简化手续,节约双方的时间。


进入编程阶段,没有动态函数说明文件应如何操作?


不理解您的意思,动态函数是指什么? 如果是指DLL动态链接库,那么可以在CH372评估资料中有简单说明,CH372EVT.ZIP 另外,在CH375DLL.H头文件中也有每个API的简单说明,在CH372驱动程序包中有。CH372DRV.ZIP 如果是指CH375的文件级操作API,那么可以参考CH375评估板资料中的说明 CH375EVT.ZIP 网上这些资料都可以直接下载。


我在编辑时出现下面的错误提示,请问何原因? 1)xp操作系统 2)软件c++6.0 Deleting intermediate files and output files for project 'ElectricityTest - Win32 Debug'. --------------------Configuration: ElectricityTest - Win32 Debug-------------------- Compiling resources... Compiling... StdAfx.cpp Compiling... ChildFrm.cpp ElectricityTest.cpp ElectricityTestDoc.cpp ElectricityTestView.cpp Loading.cpp MainFrm.cpp Generating Code... Linking... Loading.obj : error LNK2001: unresolved external symbol _CH375ReadData@12 Loading.obj : error LNK2001: unresolved external symbol _CH375WriteData@12 Loading.obj : error LNK2001: unresolved external symbol _CH375OpenDevice@4 Debug/ElectricityTest.exe : fatal error LNK1120: 3 unresolved externals Error executing link.exe.

ElectricityTest.exe - 4 error(s), 0 warning(s)

代码如下: // Loading.cpp : implementation file //

#include "stdafx.h" #include "ElectricityTest.h" #include "Loading.h" #include "CH375DLL.H"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CLoading dialog

typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned long UINTc32;

ULONG CH375DBG_Index = 0; /* CH372/CH375设备序号 */ BOOL CH375DBG_Opened = FALSE; /* CH372/CH375设备被打开标志 */

typedef struct _USB_DOWN_PACKET { /* 下传的数据包结构,用于命令/写数据 */ UINT8 mCommand; /* 命令码,见下面的定义 */ UINT8 mCommandNot; /* 命令码的反码,用于校验下传数据包 */ union { UINT8 mByte[4]; /* 通用参数 */ UINT16 mWord[2]; /* 通用参数,低字节在前,Little-Endian */ UINTc32 mDword; /* 通用参数,低字节在前,Little-Endian */ void *mAddress; /* 读写操作的起始地址,低字节在前,Little-Endian */ } u; UINT8 mLength; /* 下面的缓冲区的长度,读写操作的字节数 */ UINT8 mBuffer[8]; /* 数据缓冲区 */ } USB_DOWN_PKT;

typedef struct _USB_UP_PACKET { /* 上传的数据包结构,用于状态/读数据 */ UINT8 mStatus; /* 状态码,见下面的定义 */ UINT8 mCommandNot; /* 命令码的反码,用于校验上传数据包 */ UINT8 mReserved[4]; UINT8 mLength; /* 下面的缓冲区的长度,读操作的字节数 */ UINT8 mBuffer[8]; /* 数据缓冲区 */ } USB_UP_PKT;

CLoading::CLoading(CWnd* pParent /*=NULL*/) : CDialog(CLoading::IDD, pParent) { //{{AFX_DATA_INIT(CLoading) //}}AFX_DATA_INIT }

void CLoading::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLoading) DDX_Control(pDX, IDC_PROG, m_prog); //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CLoading, CDialog) //{{AFX_MSG_MAP(CLoading) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUT_RETRY, OnButRetry) //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CLoading message handlers

BOOL CLoading::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here SetTimer(1,1000,NULL); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

/* 命令码定义,按位说明 位7为命令类型: 0=实现特定功能, 1=存储器和SFR读写 对于"实现特定功能"命令类型: 位6-位0为定义的具体命令码, 命令码为00H-7FH, 其中: 00H-3FH为通用标准命令, 40H-7FH为与应用系统有关的特定命令 目前版本定义了以下通用标准命令: 00H: 获取调试固件程序的版本,并取消未完成的上传数据块 10H: 获取当前应用系统的版本和说明字符串 对于"存储器和SFR读写"命令类型: 位6为数据传输方向: 0=读操作/上传, 1=写操作/下传 位5-位4为数据读写宽度: 00=以字节为单位/8位, 01=以字为单位/16位, 10=以双字为单位/32位, 11=以位为单位/1位 位3-位2为产品类型码:00=电流测试设备 位1-位0为存储器空间: 00=存取SFR, 01=存取内部RAM, 10=存取外部RAM, 11=存取程序ROM 例如: 命令码80H为读SFR, 命令码83H为读程序ROM, 命令码C1H为写内部RAM, 命令码C2H为写外部RAM 状态码定义: 00H为操作成功, 080H为命令不支持, 0FFH为未定义的错误 */ #define USB_GET_TYPE 0X00 #define USB_GET_DATA 0X02

#define ERR_SUCCESS 0x00 #define ERR_UNSUPPORT 0x80 #define ERR_UNDEFINED 0xFF

void CLoading::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default KillTimer(1); USB_DOWN_PKT downdata; USB_UP_PKT updata; ULONG len; CH375DBG_Opened=FALSE; if(CH375DBG_Opened==FALSE) { CH375DBG_Opened=CH375OpenDevice(CH375DBG_Index)!= INVALID_HANDLE_VALUE; if(CH375DBG_Opened==FALSE) { AfxMessageBox("打开设备出错!请检查设置是否连线."); return; } } downdata.mCommand =USB_GET_TYPE; downdata.mCommandNot =~USB_GET_TYPE; downdata.u .mAddress =0; downdata.mLength =0; len = mOFFSET( USB_DOWN_PKT, mBuffer ); if(CH375WriteData(CH375DBG_Index,&downdata,&len)) { len = sizeof( USB_UP_PKT ); if (CH375ReadData(CH375DBG_Index, &updata, &len ) )// 读取应答块 { if (updata.mStatus == ERR_SUCCESS && updata.mCommandNot == downdata.mCommandNot && updata.mLength >= 1 ) // 操作成功,并且返回数据 { if( updata.mBuffer[0]==0x00) // 返回设备种类号 {//加入代码

} else { AfxMessageBox("00x02: 不同类型的设备!"); return; } } else { AfxMessageBox("00x01: 读取外部设备出错!"); return; } } } CDialog::OnTimer(nIDEvent); }

void CLoading::OnButRetry() { // TODO: Add your control notification handler code here CLoading::OnTimer(1); }


参考CH372评估板中的PDF说明,在VC工程属性的LINK中加入 CH375DLL.LIB


非常感谢!问题解决!


只有登录才能回复,可以选择微信账号登录