RS232串行口CAN总线转换器CAN232使用手册.docx
- 文档编号:27993711
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:19
- 大小:63.04KB
RS232串行口CAN总线转换器CAN232使用手册.docx
《RS232串行口CAN总线转换器CAN232使用手册.docx》由会员分享,可在线阅读,更多相关《RS232串行口CAN总线转换器CAN232使用手册.docx(19页珍藏版)》请在冰豆网上搜索。
RS232串行口CAN总线转换器CAN232使用手册
PCI非智能卡函数使用说明
--forWindows95/98/2000
Pcicandrv.LIB-CAN总线函数库(适用于Windows95/98/2000):
1.自定义数据结构说明
1.1PORT_STRUCT结构定义
PORT_STRUCT结构:
定义读取的PCI板卡
typedefstruct_tagPORT_STRUCT
{
BYTEcard;//indexofcard(startfrom0)
BYTEvalue;//forsomeparticularuse
}PORT_STRUCT;
成员变量说明:
card:
表示读取哪一个PCI非智能卡,基值必须从0开始;
value:
为将来功能的扩展预留;
1.2PORT_CONFIG结构定义
PORT_CONFIG结构:
配置PCI非智能卡的工作方式、ID和波特率
typedefstruct_tagPORT_CONFIG
{
WORDworkMode;//0for11-bit;
//1for29-bit
WORDfilterMode;//0forsinglefiltermode,
//1fordualfiltermode;
DWORDaccCode;//acceptcode
DWORDaccMask;//acceptmask
BYTEtimer0;//timer0register(setbaudrate)
BYTEtimer1;//timer1register
BYTEcontrol;//enableinterrupt
}PORT_CONFIG;
成员变量说明:
workMode:
0-使用11位CAN_ID;
1-使用29位CAN_ID;
filterMode:
0-CAN控制器采用单滤波方式;
1-CAN控制器采用双滤波方式;
accCode:
设定的CAN控制器节点ID;
accMask:
设定的与CAN_ID对应的屏蔽码;
timer0:
设定的CAN控制器time0寄存器内容(用于设定波特率);
timer1:
设定的CAN控制器time1寄存器内容(用于设定波特率);
control:
用于设定允许开放的中断0-禁止中断1-开放中断
control.7control.0
BEIE
ALIE
EPIE
WUIE
DOIE
EIE
TIE
RIE
BEIE:
buserrorinterruptenable
ALIE:
arbitrationlostinterruptenable
EPIE:
errorpassiveinterruptenable
WUIE:
wake-upinterruptenable
DOID:
dataoverruninterruptenable
EIE:
errorwarninginterruptenable
TIE:
transmitinterruptenable
RIE:
receiveinterruptenable
波特率与Time0、Time1寄存器设定对照表
Baudrate(bps)
Timer0
Timer1
5k
3fh
Ffh
10k
1fh
Ffh
20k
0fh
Ffh
40k
07h
Ffh
50K
07h
2fh
80k
03h
Ffh
100k
03h
2fh
125k
03h
1ch
160k
01h
Ffh
250k
01h
1ch
320k
00h
Ffh
500k
00h
1ch
800k
00h
16h
1000k
00h
14h
1.3PORT_REG结构定义
PORT_REG结构:
用于读/写CAN控制器内的寄存器的数据结构。
typedefstruct_tagPORT_REG
{
BYTEcard;//indexofcard(startfrom0)
BYTEreg;//oneofregisterinSJA1000
BYTEvalue;//forReading:
valuereadfromoneregister
//forwritting:
valuewanttowritetooneregister
}PORT_REG;
成员变量说明:
card:
表示读取哪一个PCI非智能卡,基值必须从0开始;
reg:
设定读取的CAN控制器的寄存器;
value:
读/写的寄存器内容
读操作:
保存从寄存器读取的数据
写操作:
保存写到寄存器的数据
1.4CAN_PACKET结构定义
PORT_PACKET结构:
CAN数据帧结构,用于发送和接收函数。
typedefstruct_tagCAN_PACKET
{
DWORDCAN_ID;//CANIDfield(32-bitunsignedinteger)
BYTErtr;//CANRTRbit.
BYTElength;//Lengthofdatafield.
BYTEdata[8];//Data(8bytesmaximum)
DWORDtime;//Reservedforfutureuse
BYTEreserved;//Reservedbyte
}CAN_PACKET;
成员变量说明:
CAN_ID;CAN_ID(无符号32位数)
rtr:
CANRTR位0-数据帧1-远程帧
length:
数据长度(以字节为单位,最多8个字节)
data[8]:
数据(最多8个字节);
time:
为将来功能扩展预留;
reserved:
为将来功能扩展预留;
1.5CAN_PACKET1000结构定义
PORT_PACKET1000结构:
定义此数据结构用于一次性全部读取数据缓冲区内容;
typedefstruct_tagCAN_PACKET1000
{
WORDnum;
CAN_PACKETpacket[1000];
}CAN_PACKET1000;
成员变量说明:
num:
实际从数据缓冲区内读取的CAN数据帧数量(0~1000)
packet[1000]:
保存从数据缓冲区内读取的CAN数据帧内容
2.函数使用说明
2.1打开PCI非智能卡函数
intCAN_Open(void)
参数:
无
返回值:
1-成功
0-失败
2.2初始化函数
intCAN_Init(PORT_STRUCT*ptrStruct,PORT_CONFIG*ptrConfig)
参数:
ptrStruct-结构PORT_STRUCT的指针
ptrConfig-结构PORT_CONFIG的指针
返回值:
1-打开PCI卡成功
0-打开PCI卡失败
-1-设定的PCI板卡不存在
说明:
ptrStruct结构中的card用以选择操作的PCI板卡,ptrConfig中的参数用以
设定CAN控制器的工作方式、滤波方式、波特率以及控制器开放的中断。
CAN控制器的波特率的设定以16MHZ晶振为标准。
如果使用内存缓冲区模式
(使用计算机内存,最多可存储1000帧数据),请开放CAN控制器的接收
中断允许。
注意:
以下对各函数中的ptrStruct结构不再加以说明,如非特别声明,均
用于选择操作的PCI板卡。
2.3波特率自动设定函数
intCAN_Detect_Baudrate(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-自动设定波特率成功
0-自动设定波特率失败
-1-设定的PCI板卡不存在
说明:
自动测试的波特率只能从给定的波特率列表中选择,而且只能工作于
网络上多个CAN节点(>2)同时工作的情况。
2.4禁止数据接收函数
intCAN_Disable_Receive(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-禁止数据接收成功
0-禁止数据接收失败
-1-设定的PCI板卡不存在
说明:
禁止接收函数可以使CAN控制器不再接收其它节点发送的数据,但依
然能够正常发送数据。
2.5开放数据接收函数
intCAN_Enable_Receive(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-开放数据接收成功
0-开放数据接收失败
-1-设定的PCI板卡不存在
说明:
使已禁止接收数据的CAN控制器恢复接收数据功能。
2.6读取错误警告限制函数(ErrorWarningLimit)
intCAN_Get_ErrorWarningLimit(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-读取错误警告成功
0-读取错误警告失败
-1-设定的PCI板卡不存在
说明:
CAN控制器复位后默认的错误警告数为96。
注意:
读取的错误警告数从ptrStruct结构的value变量获得。
2.7设置错误警告限制函数(ErrorWarningLimit)
intCAN_Set_ErrorWarningLimit(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-设置错误警告成功
0-设置错误警告失败
-1-设定的PCI板卡不存在
说明:
重新设置的错误警告限制值(<255)请赋于ptrStruct结构的value变
量后调用此函数。
2.8读取发送错误计数器函数
intCAN_Get_TxErrorCount(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-读取发送错误计数成功
0-读取发送错误计数失败
-1-设定的PCI板卡不存在
说明:
CAN控制器复位后默认的发送错误计数器数值为0。
注意:
读取的发送错误计数从ptrStruct结构的value变量获得。
2.9设置发送错误计数器函数
intCAN_Set_TxErrorCount(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-设置发送错误计数成功
0-设置发送错误计数失败
-1-设定的PCI板卡不存在
说明:
重新设置的发送错误计数(<255)请赋于ptrStruct结构的value变量
后调用此函数。
2.10读取接收错误计数器函数
intCAN_Get_RxErrorCount(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-读取接收错误计数成功
0-读取接收错误计数失败
-1-设定的PCI板卡不存在
说明:
CAN控制器复位后默认的接收错误计数器数值为0。
注意:
读取的接收错误计数从ptrStruct结构的value变量获得。
2.11读取总线错误代码函数
intCAN_Get_ErrorCode(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-读取总线错误代码成功
0-读取总线错误代码失败
-1-设定的PCI板卡不存在
说明:
读取的总线错误代码从ptrStruct结构的value变量获得。
2.12查询是否有接收数据函数
intCAN_Inquiry_Rece(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-有接收数据
0-无接收数据
-1-设定的PCI板卡不存在
说明:
此函数从CAN控制器缓冲区或内存缓冲区内判断是否有已接收的数
据。
2.13读取接收缓冲区内数据帧数量函数
intCAN_Get_RxBufferCount(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
>=0-接收缓冲区内数据帧的数量
-1-设定的PCI板卡不存在
说明:
此函数从CAN控制器缓冲区或内存缓冲区内读取已接收的数据帧数
量。
2.14清除接收缓冲区内数据函数
intCAN_Clear_RxBuffer(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-清除接收缓冲区内数据成功
0-清除接收缓冲区内数据失败
-1-设定的PCI板卡不存在
说明:
此函数清除CAN控制器缓冲区或内存缓冲区内已接收的数据帧。
2.15接收数据帧函数(一次只读取一帧数据)
intCAN_Rece(PORT_STRUCT*ptrStruct,CAN_PACKET*ptrPacket)
参数:
ptrStruct-结构PORT_STRUCT的指针
ptrPacket-结构CAN_PACKET的指针
返回值:
1-接收数据成功
0-无接收数据
-1-设定的PCI板卡不存在
说明:
此函数从CAN控制器缓冲区或内存缓冲区内读取已接收的数据帧。
接收的数据从ptrPacket的成员变量Data中读取。
详细数据结构请参看
自定义的CAN_PACKET结构。
注意:
以下各函数中的ptrPacket结构均指CAN数据帧结构,不再加以说
明。
2.16读缓冲区数据帧函数(一次读取全部帧数据)
intCAN_Read_RxBuffer(PORT_STRUCT*ptrStruct,CAN_PACKET1000 *ptrPacket1000)参数:
ptrStruct-结构PORT_STRUCT的指针
ptrPacket1000-结构CAN_PACKET1000的指针
返回值:
1-接收数据成功
0-无接收数据
-1-设定的PCI板卡不存在
说明:
此函数从CAN控制器缓冲区或内存缓冲区内一次性全部读取已接收的
数据帧。
接收的数据帧从ptrPacket1000的成员变量ptrPacket1000中
读取,实际接收到的数据帧数量从ptrPacket1000的成员变量num中
读取。
详细的数据结构请参看自定义的CAN_PACKET1000结构。
2.17查询是否可以发送数据函数
intCAN_Inquiry_Trans(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-CAN控制器空闲,可以发送数据
0-CAN控制器正在发送数据…
-1-设定的PCI板卡不存在
说明:
此函数判断CAN控制器状态,判断是否可以发送新的数据帧。
2.18清除正在发送的数据函数
intCAN_Clear_TxBuffer(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-清除正在发送的数据成功
0-清除正在发送的数据失败
-1-设定的PCI板卡不存在
说明:
如果CAN控制器内有正在发送的数据帧,则使此数据帧夭折发送。
2.19发送数据帧函数
intCAN-Trans(PORT_STRUCT*ptrStruct,CAN_PACKET*ptrPacket)
参数:
ptrStruct-结构PORT_STRUCT的指针
ptrPacket-结构CAN_PACKET的指针
返回值:
1-数据帧成功写入发送缓冲区等待发送
0-CAN控制器无法发送数据帧
-1-设定的PCI板卡不存在
说明:
此函数将要发送的数据帧写入发送缓冲区等待发送,但无法保证数据
帧一定发送成功;如果用户需要判断,可以调用CAN_Inquiry_Trans
()函数判断是否已经发送成功。
2.20查询CAN控制器状态函数
intCAN_Inquiry_Status(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
16Bit值高位字节:
CAN中断寄存器内容
低位字节:
CAN状态寄存器内容
说明:
此函数读取CAN中断寄存器和CAN状态寄存器内容
2.21清除数据过载函数
intCAN_Clear_Overrun(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-清除数据过载成功
0-清除数据过载失败
-1-设定的PCI板卡不存在
2.22CAN控制器软件复位函数
intCAN_Soft_Reset(PORT_STRUCT*ptrStruct)
参数:
ptrStruct-结构PORT_STRUCT的指针
返回值:
1-软件复位成功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RS232 串行口 CAN 总线 转换器 CAN232 使用手册