⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch365modl.bas

📁 南京沁恒电子有限公司USB通用设备接口芯片资料
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "Module1"
Option Explicit

' PCI总线接口芯片CH365的应用层接口库  V1.5


Type mPCI_CONFIG                     ' 定义PCI配置空间数据结构
    mPcVendorId As Integer                ' 00H 供应商标识
    mPcDeviceId As Integer                 ' 02H 设备标识
    mPcCommandReg As Integer               ' 04H 命令寄存器
    mPcStatusReg As Integer                ' 06H 状态寄存器
    mPcRevisionId As Byte               ' 08H 修改标识
    mPcProgramIf As Byte                ' 09H 寄存器级编程接口
    mPcSubClass As Byte                 ' 0AH 子类代码
    mPcBaseClass As Byte                ' 0BH 基本分类代码
    mPcCacheLine As Byte                ' 0CH 缓存行长度
    mPcLatenTimer As Byte               ' 0DH 延迟计数器
    mPcHeaderType As Byte               ' 0EH 头标类型
    mPcBistReg As Byte                  ' 0FH 内含自测试寄存器
    mPcBaseAddr0 As Long              ' 10H 基址寄存器0
    mPcBaseAddr1 As Long             ' 14H 基址寄存器1
    mPcBaseAddr2 As Long               ' 18H 基址寄存器2
    mPcBaseAddr3 As Long              ' 1CH 基址寄存器3
    mPcBaseAddr4 As Long               ' 20H 基址寄存器4
    mPcBaseAddr5 As Long              ' 24H 基址寄存器5
    mPcCardCis As Long               ' 28H
    mPcSubSysVen As Integer               ' 2CH 子系统供应商标识
    mPcSubSysDev As Integer              ' 2EH 子系统设备标识
    mPcExpansRom As Long               ' 30H 扩展ROM基址寄存器
    mPcCapPtr As Byte                   ' 34H
    mPcReserved1(3) As Byte             ' 35H
    mPcReserved2 As Long               ' 38H
    mPcInterLine As Byte                ' 3CH 中断线寄存器
    mPcInterPin As Byte                 ' 3DH 中断引脚寄存器
    mPcMinGrant As Byte                 ' 3EH
    mPcMaxLatency As Byte             ' 3FH
End Type
    
Type mPCI_EXP_ROM                   ' PCI扩展ROM的数据结构
    mPerRomSig(4) As Byte               ' 00H PCI扩展ROM签名字符串'PCIR'
    mPerVendorId As Integer                ' 04H 供应商标识
    mPerDeviceId As Integer                ' 06H 设备标识
    mPerVpdPtr As Integer                  ' 08H 重要产品数据指针
    mPerStrucLen As Integer                ' 0AH PCI扩展ROM数据结构的长度
    mPerRevision As Byte               ' 0CH PCI扩展ROM数据结构的修改版本
    mPerProgramIf As Byte               ' 0DH 寄存器级编程接口
    mPerSubClass As Byte                ' 0EH 子类代码
    mPerBaseClass As Byte               ' 0FH 基本分类代码
    mPerImageLen As Integer                ' 10H 映像长度
    mPerImageRev As Integer                ' 12H 映像中代码/数据的修改版本
    mPerCodeType As Byte                ' 14H 代码类型
    mPerIndicator As Byte               ' 15H 映像指示标志
    mPerReserved As Integer                ' 16H
End Type
 
Type mCH365_CFG_REG                 ' CH365芯片的配置寄存器
    mCh365CfgPci As mPCI_CONFIG                ' 00H-3FH,共64字节为标准PCI配置空间
    mCh365CfgCtrl As Byte               ' 40H 芯片控制寄存器,高5位只读
    mCh365CfgDin As Byte                ' 41H 8位总线输入端口,只读
    mCh365CfgState As Byte              ' 42H 芯片状态寄存器,只读
    mCh365CfgResv As Byte               ' 43H
End Type

Type mCH365_IO_REG                  ' CH365芯片的I/O空间
    mCh365IoPort(&HF0) As Byte          ' 00H-EFH,共240字节为标准的I/O端口
                                     ' 以字或者以字节为单位进行存取
    mCh365MemAddr  As Integer              ' F0H 存储器接口: A15-A0地址设定寄存器
      
    mCh365IoResv2 As Byte               ' F2H
    mCh365MemData As Byte               ' F3H 存储器接口: 存储器数据存取寄存器
    mCh365I2cData As Byte               ' F4H I2C串行接口: I2C数据存取寄存器
    mCh365I2cCtrl As Byte               ' F5H I2C串行接口: I2C控制和状态寄存器
    mCh365I2cAddr As Byte               ' F6H I2C串行接口: I2C地址设定寄存器
    mCh365I2cDev As Byte                ' F7H I2C串行接口: I2C设备地址和命令寄存器
    mCh365IoCtrl As Byte                ' F8H 芯片控制寄存器,高5位只读
    mCh365IoBuf As Byte                 ' F9H 本地数据输入缓存寄存器
    mCh365Speed As Byte                 ' FAH 芯片速度控制寄存器
    mCh365IoResv3 As Byte               ' FBH
    mCh365IoTime As Byte                ' FCH 硬件循环计数寄存器
    mCh365IoResv4(3) As Byte            ' FDH
End Type

Type mCH365_MEM_REG                ' CH365芯片的存储器空间
    mCh365MemPort(0 To &H7FFF) As Byte      ' 0000H-7FFFH,共32768字节为标准的存储器单元
End Type

Type mWIN32_COMMAND                   ' 定义WIN32命令接口结构
    mFunction As Long                 ' 输入时指定功能代码
    mAddress As Variant                  ' 起始地址,返回地址
    mLength As Long                     ' 存取长度,返回后续数据的长度
    mBuffer(4) As Long                  ' 数据缓冲区,长度为0至32KB
End Type

Declare Function CH365OpenDevice Lib "CH365DLL.DLL" (ByVal iEnableMemory As Boolean, ByVal iEnableInterrupt As Boolean) As Long
' CH365OpenDevice      打开CH365设备,返回句柄,出错则无效
'   iEnableMemory      是否需要支持存储器
'   iEnableInterrupt   是否需要支持中断

Declare Function CH365CloseDevice Lib "CH365DLL.DLL" ()    ' 关闭CH365设备


Declare Function CH365GetVersion Lib "CH365DLL.DLL" ()    ' 获得DLL版本号,返回版本号

Declare Function CH365DriverCommand Lib "CH365DLL.DLL" (ByRef ioCommand As mWIN32_COMMAND) As Long  ' 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
' 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
' 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
' 命令结构在调用前,分别提供:命令功能代码,起始地址(可选),存取数据的长度(可选),
' 命令结构在调用后,分别返回:操作状态代码,返回的基址(可选),后续数据的长度(可选),
' 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
' 返回的基址只适用于下列命令:获取I/O基址,获取存储器基址,获取中断号,对于其它命令则保持输入时的起始地址
' 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0


Declare Function CH365GetDrvVersion Lib "CH365DLL.DLL" () As Long  ' 获得驱动程序版本号,返回版本号,出错则返回0

Declare Function CH365GetIoBaseAddr Lib "CH365DLL.DLL" (ByRef oIoBaseAddr As mCH365_IO_REG) As Boolean
' CH365GetIoBaseAddr  获取I/O端口的基址
'        oIoBaseAddr  保存I/O端口基址的单元地址

Declare Function CH365SetIoBaseAddr Lib "CH365DLL.DLL" (ByVal iIoBaseAddr As mCH365_IO_REG) As Boolean
' CH365SetIoBaseAddr  设定I/O端口的基址
'        iIoBaseAddr   指定I/O端口基址

Declare Function CH365GetMemBaseAddr Lib "CH365DLL.DLL" (ByRef oMemBaseAddr As mCH365_MEM_REG) As Boolean
' CH365GetMemBaseAddr  获取存储器的基址
'        oMemBaseAddr  保存存储器基址的单元地址

Declare Function CH365SetMemBaseAddr Lib "CH365DLL.DLL" (ByVal iMemBaseAddr As mCH365_MEM_REG) As Boolean
'  CH365SetMemBaseAddr   设定存储器的基址
'         iMemBaseAddr   指定存储器基址,为0则关闭存储器,为-1则自动设定

Declare Function CH365GetIntLine Lib "CH365DLL.DLL" (ByRef oIntLine As Long) As Boolean
' CH365GetIntLine    获取中断号
'        oIntLine    保存中断号的单元地址

Declare Function CH365SetIntLine Lib "CH365DLL.DLL" (ByVal iIntLine As Long) As Boolean
'  CH365SetIntLine   设定中断号
'         iIntLine   指定中断号,为0则关闭中断,为-1则自动检测并设定

Declare Function CH365WaitInterrupt Lib "CH365DLL.DLL" () As Boolean ' 等待中断事件

Declare Function CH365AbortWaitInt Lib "CH365DLL.DLL" () As Boolean ' 放弃等待中断

Declare Function CH365SetIntRoutine Lib "CH365DLL.DLL" (ByVal iIntRoutine As Long) As Boolean
' CH365SetIntRoutine   设定中断服务程序
' mPCH365_INT_ROUTINE iIntRoutine  指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序

Declare Function CH365ReadIntCommand Lib "CH365DLL.DLL" (ByRef oCommand As mWIN32_COMMAND, ByVal iCmdIndex As Long) As Boolean
' CH365ReadIntCommand   读取中断命令缓冲区
'            oCommand   指向一个足够大的缓冲区,用于保存读取的命令结构
'           iCmdIndex   中断命令序号,为1或者2

Declare Function CH365WriteIntCommand Lib "CH365DLL.DLL" (ByRef iCommand As mWIN32_COMMAND, ByVal iCmdIndex As Long) As Boolean
'  CH365WriteIntCommand    写入中断命令缓冲区
'              iCommand    指向作为中断命令的命令结构
'             iCmdIndex    中断命令序号,为1或者2

Declare Function CH365ReadIoByte Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByRef oByte As Byte) As Boolean
' CH365ReadIoByte    从I/O端口读取一个字节
'           iAddr    指定I/O端口的地址
'           oByte    指向一个字节单元,用于保存读取的字节数据

Declare Function CH365ReadIoWord Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByRef oWord As Integer) As Boolean
' CH365ReadIoWord    从I/O端口读取一个字
'           iAddr    指定I/O端口的地址
'           oWord    指向一个字单元,用于保存读取的字数据

Declare Function CH365ReadIoDword Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByRef oDword As Long) As Boolean
' CH365ReadIoDword   从I/O端口读取一个双字
'            iAddr   指定I/O端口的地址
'           oDword   指向一个双字单元,用于保存读取的双字数据

Declare Function CH365WriteIoByte Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByVal iByte As Byte) As Boolean
'CH365WriteIoByte    向I/O端口写入一个字节
'           iAddr    指定I/O端口的地址
'           iByte    待写入的字节数据

Declare Function CH365WriteIoWord Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByVal iWord As Integer) As Boolean
'CH365WriteIoWord    向I/O端口写入一个字
'           iAddr    指定I/O端口的地址
'           iWord    待写入的字数据

Declare Function CH365WriteIoDword Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByVal iDword As Long) As Boolean
' CH365WriteIoDword   向I/O端口写入一个双字
'             iAddr   指定I/O端口的地址
'            iDword   待写入的双字数据

Declare Function CH365ReadMemByte Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByRef oByte As Byte) As Boolean
' CH365ReadMemByte    从存储器读取一个字节
'            iAddr    指定存储器的地址,虚拟地址
'            oByte    指向一个字节单元,用于保存读取的字节数据
Declare Function CH365ReadMemDword Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByRef oDword As Long) As Boolean

' CH365ReadMemDword   从存储器读取一个双字
'             iAddr   指定存储器的地址,虚拟地址
'            oDword   指向一个双字单元,用于保存读取的双字数据

Declare Function CH365WriteMemByte Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByVal iByte As Byte) As Boolean

' CH365WriteMemByte   向存储器写入一个字节
'             iAddr   指定存储器的地址,虚拟地址
'             iByte   待写入的字节数据

Declare Function CH365WriteMemDword Lib "CH365DLL.DLL" (ByVal iAddr As Any, ByVal iDword As Long) As Boolean
'  CH365WriteMemDword   向存储器写入一个双字
'               iAddr   指定存储器的地址,虚拟地址
'              iDword   待写入的双字数据

Declare Function CH365ReadConfig Lib "CH365DLL.DLL" (ByVal iOffset As Any, ByRef oByte As Byte) As Boolean
'  CH365ReadConfig     从配置空间读取一个字节数据
'          iOffset     指定偏移地址
'          oByte       指向一个字节单元,用于保存读取的字节数据

Declare Function CH365WriteConfig Lib "CH365DLL.DLL" (ByVal iOffset As Any, ByVal iByte As Byte) As Boolean

' CH365WriteConfig    向配置空间写入一个字节数据
'          iOffset    指定偏移地址
'            iByte    待写入的字节数据

Declare Function CH365SetA15_A8 Lib "CH365DLL.DLL" (ByVal iA15_A8 As Byte) As Boolean
' CH365SetA15_A8    设置高地址,即设置A15-A8的输出
'        iA15_A8    位7-位0对应A15-A8的输出,1为高电平,0为低电平

Declare Function CH365ReadI2C Lib "CH365DLL.DLL" (ByVal iDevice As Byte, ByVal iAddr As Byte, ByRef oByte As Byte) As Boolean
' CH365ReadI2C     从I2C接口读取一个字节数据
'      iDevice     低7位指定I2C设备地址
'        iAddr     指定数据单元的地址
'        oByte     指向一个字节单元,用于保存读取的字节数据

Declare Function CH365WriteI2C Lib "CH365DLL.DLL" (ByVal iDevice As Byte, ByVal iAddr As Byte, ByVal oByte As Byte) As Boolean
' CH365WriteI2C   向I2C接口写入一个字节数据
'       iDevice   低7位指定I2C设备地址
'         iAddr   指定数据单元的地址
'         iByte   待写入的字节数据

Declare Function CH365mOpenDevice Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iEnableMemory As Boolean, ByVal iEnableInterrupt As Boolean) As Long
'  CH365mOpenDevice   打开CH365设备,返回句柄,出错则无效
'            iIndex   指定CH365设备序号,0对应第一个设备
'     iEnableMemory   是否需要支持存储器

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -