123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- /********************************** (C) COPYRIGHT *********************************
- * File Name : CH395INC.H
- * Author : WCH
- * Version : V1.1
- * Date : 2014/8/1
- * Description : CH395ͷ�ļ�
- *
- **********************************************************************************/
- #ifndef __CH395INC_H__
- #define __CH395INC_H__
- /* ********************************************************************************************************************* */
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #endif
- #ifndef NULL
- #define NULL 0
- #endif
- #ifndef UINT8
- typedef unsigned char UINT8;
- #endif
- #ifndef UINT16
- typedef unsigned short UINT16;
- #endif
- #ifndef UINT32
- //typedef unsigned long UINT32;
- #endif
- #ifndef INT8
- //typedef signed char INT8;
- #endif
- #ifndef INT16
- typedef signed short INT16;
- #endif
- #ifndef INT32
- typedef signed long INT32;
- #endif
- #ifndef UINT8V
- typedef unsigned char volatile UINT8V;
- #endif
- #ifndef PUINT8
- typedef unsigned char *PUINT8;
- #endif
- #ifndef PUINT16
- typedef unsigned short *PUINT16;
- #endif
- #ifndef PUINT32
- typedef unsigned long *PUINT32;
- #endif
- #ifndef PUINT8V
- typedef unsigned char volatile *PUINT8V;
- #endif
- /* ********************************************************************************************************************* */
- /* 命令代码 */
- /* 一个命令操作顺序包含:
- 一个命令码(对于串口方式,命令码之前还需要两个同步码),
- 若干个输入数据(可以是0个),
- 若干个输出数据(可以是0个)
- 命令码起名规则: CMDxy_NAME
- 其中的x和y都是数字, x说明最少输入数据个数(字节数), y说明最少输出数据个数(字节数), y如果是W表示需要等待命令执行成功
- 有些命令能够实现0到多个字节的数据块读写, 数据块本身的字节数未包含在上述x或y之内 */
- /* ********************************************************************************************************************* */
- #define CMD01_GET_IC_VER 0x01 /* 获取芯片以及固件版本号 */
- /* 输出: 版本号( 位7为0, 位6为1, 位5~位0为版本号 ) */
- /* CH3395返回版本号的值为041H即版本号为01H */
-
- #define CMD31_SET_BAUDRATE 0x02 /* 串口方式: 设置串口通讯波特率(上电或者复位后的默认波特率为9600bps */
- /* 输入: 3字节波特率,第字节在前 */
- /* 输出: 操作状态( CMD_RET_SUCCESS, 其它值说明操作未完成 ) */
-
- #define CMD00_ENTER_SLEEP 0x03 /* 进入睡眠状态 */
-
- #define CMD00_RESET_ALL 0x05 /* 执行硬件复位 */
-
- #define CMD11_CHECK_EXIST 0x06 /* 测试通讯接口以及工作状态 */
- /* 输入: 任意数据 */
- /* 输出: 输入数据的按位取反 */
- #define CMD02_GET_GLOB_INT_STATUS_ALL 0x19 /* 获取全局中断状态,V44版本以后的程序由于增加了socket数量需要用此命令获取全部的中断 */
- /*输出:全局中断状态,参考全局中断状态定义 */
-
- #define CMD10_SET_PHY 0x20 /* 设置PHY,默认为Auto,自动协商 */
- /* 输入:PHY参数,参考PHY参数定义 */
-
- #define CMD60_SET_MAC_ADDR 0x21 /* 设置MAC地址 必须在CMD00H_INIT_CH395之前设置完毕 */
- /* 输入:6字节的MAC地址 */
-
- #define CMD40_SET_IP_ADDR 0x22 /* 设置IP地址 必须在CMD00H_INIT_CH395之前设置完毕 */
- /* 输入:4字节的IP地址 */
-
- #define CMD40_SET_GWIP_ADDR 0x23 /* 设置网关IP地址 必须在CMD00H_INIT_CH395之前设置完毕 */
- /* 输入:4字节的网关IP地址 */
-
- #define CMD40_SET_MASK_ADDR 0x24 /* 设置子网掩码, 必须在CMD00H_INIT_CH395之前设置完毕 */
- /* 输入:4字节的子网掩码 */
-
- #define CMD90_SET_MAC_FILT 0x25 /* 设置MAC过滤 可以进行广播,多播等过滤 */
- /* 输入:9字节参数,第1字节为过滤类型,参考过滤类型定义,*/
- /* 第2至第5字节为HASH0,第6至第9字节为HASH1 */
- #define CMD01_GET_PHY_STATUS 0x26 /* 获取PHY当前状态,如断开连接,10/100M FULL/HALF */
- /* 输出:当前PHY状态,状态定义请参考PHY参数定义 */
-
- #define CMD0W_INIT_CH395 0x27 /* 初始化CH395 */
- /* 此命令执行时间大约200MS,需要等待此命令执行成功,才可以发下一条命令 */
-
- #define CMD08_GET_UNREACH_IPPORT 0x28 /* 获取不可达信息 */
- /* 输出:8字节,第1字节为不可达类型,参考不可达类型定义 */
- /* 第2字节协议不可达协议码 */
- /* 第3,4字节不可达端口 */
- /* 第5-8字不可达IP */
- #define CMD01_GET_GLOB_INT_STATUS 0x29 /* 获取全局中断状态,最大值为1S,不可以设置为0 */
- /* 输出:全局中断状态,参考全局中断状态定义 */
-
- #define CMD10_SET_RETRAN_COUNT 0x2A /* 重试次数,仅在TCP模式下有效 */
- /* 输入:重试次数 */
-
- #define CMD20_SET_RETRAN_PERIOD 0x2B /* 重试周期,最大值为20,仅在TCP模式下有效,不可以设置为0 */
- /* 输入:重试周期 */
-
- #define CMD01_GET_CMD_STATUS 0x2C /* 获取命令执行状态 */
- /* 输出:命令执行状态,参考命令执行状态定义 */
-
- #define CMD06_GET_REMOT_IPP_SN 0x2D /* 获取远端的端口以及IP地址,该命令在TCP服务器模式下使用 */
- /* 输出:6字节,第1-4字节为远端的IP地址,第5-6字节为远端的端口号 */
-
- #define CMD10_CLEAR_RECV_BUF_SN 0x2E /* 清除接收缓冲区 */
- /* 输入:第1字节为socket的索引值 */
-
- #define CMD12_GET_SOCKET_STATUS_SN 0x2F /* 获取socket n状态 */
- /* 输入:socket的索引值,*/
- /* 输出:第1字节:socket n 打开或者关闭
- 第2字节:TCP状态,仅在TCP模式且第1字节为打开状态下有意义 */
-
- #define CMD11_GET_INT_STATUS_SN 0x30 /* 获取socket n的中断状态 */
- /* 输入: socket的索引值*/
- /* 输出:全局中断状态,参考全局中断状态定义 */
-
- #define CMD50_SET_IP_ADDR_SN 0x31 /* 设置socket n的目的IP地址 */
- /* 输入:第1字节为socket的索引值,第2至5字节为IP地址 */
-
- #define CMD30_SET_DES_PORT_SN 0x32 /* 设置socket n的目的端口 */
- /* 输入:第1字节为socket的索引值,第2至3字节为目的端口 */
-
- #define CMD30_SET_SOUR_PORT_SN 0x33 /* 设置socket n的源端口 */
- /* 输入:第1字节为socket的索引值,第2至3字节为源端口 */
-
- #define CMD20_SET_PROTO_TYPE_SN 0x34 /* 设置socket n的协议类型 */
- /* 输入:第1字节为socket的索引值,第2协议类型,参考协议类型定义 */
-
- #define CMD1W_OPEN_SOCKET_SN 0x35 /* 打开socket n */
- /* 输入:第1字节为socket的索引值,此命令需要等待命令执行成功 */
-
- #define CMD1W_TCP_LISTEN_SN 0x36 /* socket n监听,收到此命令,socket n进入服务器模式,仅对TCP模式有效 */
- /* 输入:第1字节为socket的索引值,此命令需要等待命令执行成功 */
-
- #define CMD1W_TCP_CONNECT_SN 0x37 /* socket n连接,收到此命令,socket n进入客户端模式,仅对TCP模式有效 */
- /* 输入:第1字节为socket的索引值,此命令需要等待命令执行成功 */
-
- #define CMD1W_TCP_DISNCONNECT_SN 0x38 /* socket n断开连接,收到此命令,socket n断开已有连接,仅对TCP模式有效 */
- /* 输入:第1字节为socket的索引值,此命令需要等待命令执行成功 */
-
- #define CMD30_WRITE_SEND_BUF_SN 0x39 /* 向socket n缓冲区写入数据 */
- /* 输入:第1字节为socket的索引值,第2至3字节为长度 */
-
- #define CMD12_GET_RECV_LEN_SN 0x3B /* 获取socket n接收数据的长度 */
- /* 输入:socket的索引值 */
- /* 输出:2字节的接收长度 */
-
- #define CMD30_READ_RECV_BUF_SN 0x3C /* 读取socket n接收缓冲区数据 */
- /* 输入:第1字节为socket的索引值,第2至3字节为读取的长度n,低位在前 */
- /* 输出:n个数据 */
-
- #define CMD1W_CLOSE_SOCKET_SN 0x3D /* 关闭socket n */
- /* 输入:socket的索引值 */
-
- #define CMD20_SET_IPRAW_PRO_SN 0x3E /* 在IP RAW下,设置socket n的IP包协议类型 */
- /* 输入:第1字节为socket的索引值,第2字节为IP RAW协议类型 */
-
- #define CMD01_PING_ENABLE 0x3F /* 开启/关闭PING */
- /* 输入:1字节,0为关闭PING,1为开启PING,默认开启 */
-
- #define CMD06_GET_MAC_ADDR 0x40 /* 获取MAC地址 */
- /* 输出:6字节的MAC地址 */
- #define CMD10_DHCP_ENABLE 0x41 /* DHCP使能 */
- /* 输入:1字节,1启动DHCP,0关闭DHCP */
- #define CMD01_GET_DHCP_STATUS 0x42 /* 获取DHCP状态 */
- /* 输出: 1字节状态码,0表示成功,其他值失败 */
-
- #define CMD014_GET_IP_INF 0x43 /* IP,子网掩码,网关 */
- /* 输出:20字节,分别为4字节IP,4字节网关,4字节掩码,4字节的DNS1,4字节的DNS2 */
- #define CMD00_PPPOE_SET_USER_NAME 0x44 /* 设置PPPOE用户名 */
- /* 输入:N个字节,0为结束符 */
-
- #define CMD00_PPPOE_SET_PASSWORD 0x45 /* 设置密码 */
- /* 输入:N个字节,0为结束符 */
-
- #define CMD10_PPPOE_ENABLE 0x46 /* PPPOE使能 */
- /* 输入:1字节,1启动PPPOE,0关闭PPPOE */
-
- #define CMD01_GET_PPPOE_STATUS 0x47 /* 获取pppoe状态 */
- /* 输出: 1字节状态码,0表示成功,其他值失败 */
-
- #define CMD20_SET_TCP_MSS 0x50 /* 设置TCP MSS */
- /* 输入:TCP MSS,低位在前 */
- #define CMD20_SET_TTL 0x51 /* 设置TTL,TTL最大值为128 */
- /* 输入:第1字节为socket的索引值,第2字节为TTL值,最大为128 */
- #define CMD30_SET_RECV_BUF 0x52 /* 设置SOCKET接收缓冲区 */
- /* 输入:第1字节为socket的索引值,第2字节为起始块索引,第3字节为块数 */
-
- #define CMD30_SET_SEND_BUF 0x53 /* 设置SOCKET发送缓冲区 */
- /* 输入:第1字节为socket的索引值,第2字节为起始块索引,第3字节为块数 */
-
- #define CMD10_SET_MAC_RECV_BUF 0x54 /* 设置MAC接收缓冲区 */
- /* 输入:输入1字节的MAC接收缓冲区的大小,16字节为单位 */
-
- #define CMD40_SET_FUN_PARA 0x55 /* 设置功能参数 */
- /* 输入:4字节的启动参数 */
- #define CMD40_SET_KEEP_LIVE_IDLE 0x56 /* 设置KEEPLIVE空闲 */
- /*输入:4字节的保活定时器空闲时间参数,低位在前 */
- #define CMD40_SET_KEEP_LIVE_INTVL 0x57 /* 设置间隔时间 */
- /*输入:4字节的保活定时器超时间隔,低位在前 */
- #define CMD10_SET_KEEP_LIVE_CNT 0x58 /* 重试次数 */
- /*输入:1字节重试次数 */
- #define CMD20_SET_KEEP_LIVE_SN 0X59 /* 设置socket nkeeplive功能*/
- /*输入:1个字节Socket索引,1个字节设置 */
- #define CMD00_EEPROM_ERASE 0xE9 /* 擦除EEPROM*/
-
- #define CMD30_EEPROM_WRITE 0xEA /* 写EEPROM */
- /* 输入:2字节地址,1字节长度,长度必须小于64字节 */
-
- #define CMD30_EEPROM_READ 0xEB /* 读EEPROM */
- /* 输入:2字节地址,1字节长度,长度必须小于64字节 */
-
- #define CMD10_READ_GPIO_REG 0xEC /* 读GPIO寄存器 */
- /* 输入:第1个字节为REG地址,关于地址请参考相关宏定义 */
-
- #define CMD20_WRITE_GPIO_REG 0xED /* 写GPIO寄存器 */
- /* 输入:第1个字节为REG地址,关于地址请参考相关宏定义 */
- /* 第2个字节为数据 */
- /* 协议类型 */
- #define PROTO_TYPE_IP_RAW 0 /* IP层原始数据 */
- #define PROTO_TYPE_MAC_RAW 1 /* MAC层原始数据 */
- #define PROTO_TYPE_UDP 2 /* UDP协议类型 */
- #define PROTO_TYPE_TCP 3 /* TCP协议类型 */
-
- /* PHY 命令参数/状态 */
- #define PHY_DISCONN (1<<0) /* PHY断开 */
- #define PHY_10M_FLL (1<<1) /* 10M全双工 */
- #define PHY_10M_HALF (1<<2) /* 10M半双工 */
- #define PHY_100M_FLL (1<<3) /* 100M全双工 */
- #define PHY_100M_HALF (1<<4) /* 100M半双工 */
- #define PHY_AUTO (1<<5) /* PHY自动模式,CMD10H_SET_PHY */
-
- /*CH395 MAC过滤*/
- #define MAC_FILT_RECV_BORADPKT (1<<0) /* 使能接收广播包 */
- #define MAC_FILT_RECV_ALL (1<<1) /* 使能接收所有数据包 */
- #define MAC_FILT_RECV_MULTIPKT (1<<2) /* 使能接收多播包 */
- #define MAC_FILT_RECV_ENABLE (1<<3) /* 使能接收 */
- #define MAC_FILT_SEND_ENABLE (1<<4) /* 使能发送 */
-
- /* 中断状态 */
- /* 以下为GLOB_INT会产生的状态 */
- #define GINT_STAT_UNREACH (1<<0) /* 不可达中断 */
- #define GINT_STAT_IP_CONFLI (1<<1) /* IP冲突 */
- #define GINT_STAT_PHY_CHANGE (1<<2) /* PHY状态改变 */
- #define GINT_STAT_DHCP (1<<3) /* PHY状态改变 */
- #define GINT_STAT_SOCK0 (1<<4) /* socket0 产生中断 */
- #define GINT_STAT_SOCK1 (1<<5) /* socket1 产生中断 */
- #define GINT_STAT_SOCK2 (1<<6) /* socket2 产生中断 */
- #define GINT_STAT_SOCK3 (1<<7) /* socket3 产生中断 */
- #define GINT_STAT_SOCK4 (1<<8) /* scoket4 产生中断 */
- #define GINT_STAT_SOCK5 (1<<9) /* scoket5 产生中断 */
- #define GINT_STAT_SOCK6 (1<<10) /* scoket6 产生中断 */
- #define GINT_STAT_SOCK7 (1<<11) /* scoket7 产生中断 */
-
- /*以下为Sn_INT会产生的状态*/
- #define SINT_STAT_SENBUF_FREE (1<<0) /* 发送缓冲区空闲 */
- #define SINT_STAT_SEND_OK (1<<1) /* 发送成功 */
- #define SINT_STAT_RECV (1<<2) /* socket端口接收到数据或者接收缓冲区不为空 */
- #define SINT_STAT_CONNECT (1<<3) /* 连接成功,TCP模式下产生此中断 */
- #define SINT_STAT_DISCONNECT (1<<4) /* 连接断开,TCP模式下产生此中断 */
- #define SINT_STAT_TIM_OUT (1<<6) /* ARP和TCP模式下会发生此中断 */
-
- /* 获取命令状态 */
- #define CMD_ERR_SUCCESS 0x00 /* 命令操作成功 */
- #define CMD_RET_ABORT 0x5F /* 命令操作失败 */
- #define CH395_ERR_BUSY 0x10 /* 忙状态,表示当前正在执行命令 */
- #define CH395_ERR_MEM 0x11 /* 内存错误 */
- #define CH395_ERR_BUF 0x12 /* 缓冲区错误 */
- #define CH395_ERR_TIMEOUT 0x13 /* 超时 */
- #define CH395_ERR_RTE 0x14 /* 路由错误*/
- #define CH395_ERR_ABRT 0x15 /* 连接停止*/
- #define CH395_ERR_RST 0x16 /* 连接复位 */
- #define CH395_ERR_CLSD 0x17 /* 连接关闭/socket 在关闭状态 */
- #define CH395_ERR_CONN 0x18 /* 无连接 */
- #define CH395_ERR_VAL 0x19 /* 错误的值 */
- #define CH395_ERR_ARG 0x1a /* 错误的参数 */
- #define CH395_ERR_USE 0x1b /* 已经被使用 */
- #define CH395_ERR_IF 0x1c /* MAC错误 */
- #define CH395_ERR_ISCONN 0x1d /* 已连接 */
- #define CH395_ERR_OPEN 0X20 /* 已经打开 */
- #define CH395_ERR_UNKNOW 0xFA /* 未知错误 */
- /* PPP状态 */
- #define CH395_PPP_SUCCESS 0 /* 成功 */
- #define CH395_PPPERR_PARM 1 /* 无效参数 */
- #define CH395_PPPERR_OPEN 2 /* 无法打开PPP会话 */
- #define CH395_PPPERR_DEVICE 3 /* 无效的PPP设备 */
- #define CH395_PPPERR_ALLOC 4 /* 资源分配失败 */
- #define CH395_PPPERR_USER 5 /* 用户中断 */
- #define CH395_PPPERR_CONNECT 6 /* 连接断开 */
- #define CH395_PPPERR_AUTHFAIL 7 /* 挑战鉴别失败 */
- #define CH395_PPPERR_PROTOCOL 8 /* 握手协议失败 */
- #define CH395_PPPERR_TIME_OUT 9 /* 超时失败 */
- #define CH395_PPPERR_CLOSE 10 /* 关闭失败 */
- /* 不可达代码 */
- #define UNREACH_CODE_HOST 0 /* 主机不可达 */
- #define UNREACH_CODE_NET 1 /* 网络不可达 */
- #define UNREACH_CODE_PROTOCOL 2 /* 协议不可达 */
- #define UNREACH_CODE_PROT 3 /* 端口不可达 */
- /*其他值请参考RFC792文档*/
-
- /* 命令包头 */
- #define SER_SYNC_CODE1 0x57 /* 串口命令同步码1 */
- #define SER_SYNC_CODE2 0xAB /* 串口命令同步码2 */
-
- /* TCP状态 */
- #define TCP_CLOSED 0
- #define TCP_LISTEN 1
- #define TCP_SYN_SENT 2
- #define TCP_SYN_RCVD 3
- #define TCP_ESTABLISHED 4
- #define TCP_FIN_WAIT_1 5
- #define TCP_FIN_WAIT_2 6
- #define TCP_CLOSE_WAIT 7
- #define TCP_CLOSING 8
- #define TCP_LAST_ACK 9
- #define TCP_TIME_WAIT 10
- /* GPIO寄存器地址 */
- #define GPIO_DIR_REG 0x80 /* 寄存器方向寄存器,1:输出;0:输入 */
- #define GPIO_IN_REG 0x81 /* GPIO输入寄存器 */
- #define GPIO_OUT_REG 0x82 /* GPIO输出寄存器 */
- #define GPIO_CLR_REG 0x83 /* GPIO输出清除: 0=keep, 1=clear */
- #define GPIO_PU_REG 0x84 /* GPIO上拉使能寄存器 */
- #define GPIO_PD_REG 0x85 /* GPIO下拉使能寄存器 */
- /* 功能参数 */
- #define FUN_PARA_FLAG_TCP_SERVER (1<<1) /* tcp server 多连接模式标志,0X44版本及以后支持 */
- #define FUN_PARA_FLAG_LOW_PWR (1<<2) /* 低耗能模式 */
- #define SOCK_CTRL_FLAG_SOCKET_CLOSE (1<<3) /* CH395不主动关闭Socket */
- #define SOCK_DISABLE_SEND_OK_INT (1<<4) /* send ok中断控制位,为1表示关闭send ok中断 */
- #ifdef __cplusplus
- }
- #endif
- #endif
- /**************************** endfile *************************************/
|