FBC0409
芯片数据手册
V1.1
版本纪录
版本时间说明备注
1.0 05.06.22 发布版本
1.1 10.07.20 发布版本封装由TQFP44改为
LQFP44
版权与免责声明
沈阳自动化研究所(SIA)2005版权所有,保留一切权利。
本文档中所有信息均为SIA所有,属于保密范围,仅提供给芯片客户使用。在未取得SIA书面授权的条件下,不得以任何方式复制、散发。
SIA并不为本文中信息提供保证,任何因使用本文中信息造成的间接的或直接的损失SIA概不负责。因产品改动造成的文档信息改变恕不另行通知。
联系我们
沈阳自动化研究所(SIA)
沈阳市东陵区南塔街114号
电话:86-24-23970133
网址:https://www.sodocs.net/doc/966599618.html,
技术支持:YANG@https://www.sodocs.net/doc/966599618.html,
目录
一.芯片简介 (5)
二.功能特点 (5)
三.典型应用 (6)
四.PIN说明 (6)
五.功能描述 (7)
1 CPU接口模块 (8)
2 寄存器处理模块 (8)
4 定时器模块 (8)
5 DMA控制器模块 (9)
7. 地址识别模块 (9)
8 接收模块 (9)
9 发送模块 (10)
A 时钟产生模块 (10)
B 中断处理模块 (10)
六.地址映射 (11)
七. FBC0409寄存器 (11)
八. 封装信息 (22)
九. 性能指标 (24)
1温度特性 (24)
2电气特性 (24)
表格
表 1 名词/缩略语 (4)
表 2 FBC0409管脚描述 (7)
表 3 帧码/类型帧对应表 (20)
表 4 封装信息 (23)
表 5 FBC0409直流特性 (24)
图示
图 1 FBC0409控制器典型连接及应用 (6)
图 2 FBC0409 PIN的分布示意图 (6)
图 3 FBC0409内部功能模块框图 (8)
图 4 FBC0409内部寄存器分组 (15)
图 5 FBC0409封装信息 (22)
名词/缩略语
下表中定义了本文中使用的名词定义和英文的缩略语。
名词/缩略语定义/解释
BUS:基金会现场总线
FIELD
FB FOUNDATION
FBC FOUNDATION FIELD BUS CONTROLLER基金会现场总线控制器
IEC INTERNATIONAL ELECTRONIC COMMITTEE:国际电工委员会
MAU MEDIUM
UNIT:介质存取单元
ATTACH
直接访问存储器
ACCESS:
MEMORY
DMA DIRECT
FCS FRAME CHECK SEQUENCE:帧校验序列
表 1 名词/缩略语
一.芯片简介
FBC0409基金会现场总线通信控制器符合IEC 1158-2规范的中现场总线物理层标准,可满足高性能基金会总线网络主、从设备的使用要求。
FBC0409内部设置有曼彻斯特编/解码器,只要外接简单的MAU即可接入现场总线系统中进行通信。且对总线的接线方式是没有极性要求的,在芯片内部已经置有极性检测与自动校正功能。FBC0409内置4k数据RAM和DMA控制器,数据的接收、发送、地址表的查找均可不需CPU干涉,大大减轻CPU负担。芯片具有较丰富的线路监测功能,对于线路的发送/接收状态、误码、帧丢失、帧冲突等均可检测。
FBC0409具有一定的链路层功能:发送/接收帧校验FCS、16位1MS定时器、16位1/32MS定时器、16位字节定时器、帧码译码与地址识别。
二.功能特点
FBC0409芯片定位基金会总线FB通信控制器物理层和部分链路层功能,具体如下:
数据传输速率为31.25KBIT/S,采用曼彻斯特编码;
内置曼码编/解码器;
具有禁止闲谈电路,以避免接收或发送长时间占用线路;
网络侧接收可线路极性自动识别并校正;
自动进行帧类型信息和目的地址识别;
接收自动帧校验,发送帧校验可软件控制;
内置2通道DMA控制器,用于支持发送、接收和目的地址识别;
内置4KBYTE异步SRAM,用于存储发送、接收和地址表数据;
内置总线仲裁机制,确保CPU正确访问内部SRAM;
向链路层提供定时器:1MS、(1/32)MS、OCTET;
具有丰富的中断寄存器和状态寄存器
与INTEL系列、ARM CPU配合良好;
具有内环回测试功能;
具有STANDBY功能;
工作温度范围:-40℃~85℃
典型工作功耗:<600UA
44管脚,TQFP封装。
三.典型应用
本芯片设计定位为基金会总线FB通信控制器,在系统中的典型应用如下图。
图 1 FBC0409控制器典型连接及应用
四.PIN说明
FBC0409为TQFP 44封装,芯片面积10MM X 10MM,PIN间距1.8MM。功能管脚共35条。见下图示。
图 2 FBC0409 PIN的分布示意图
FBC0409管脚描述
名称类型描述注
PB_ADDR[11:0] INPUT 12位地址总线
PB_DATA[7:0] INOUT 8位地址总线
PB_RAMCS_N INPUT 内部RAM片选信号,低有效
PB_REGCS_N INPUT 寄存器片选信号,低有效
系统复位信号,低有效
RST_N INPUT
CPU写控制信号
PB_WR INPUT
CPU读控制信号
PB_RD INPUT
系统时钟,要求与CPU时钟同源
SCLK INPUT
线路时钟,可独立与SCLK NCLK INPUT
PO_CLK125K OUTPUT输出125k时钟
PO_READY OUTPUT请求等待信号,当快速CPU访问
片内RAM的时候,芯片会根据
CPU时钟频率给出PO_READY等
待信号,只有0和高阻两态输出
PBO_INT_N OUTPUT中断申请信号,低有效
PBI_INT_N INPUT 外部中断申请输入信号,低有效
TXEN OUTPUT FF总线发送数据指示,可由软件配
置有效电平
TX_FFD OUTPUT FF总线发送数据
FF总线接收数据
RX_FFD INPUT
IO供电电压,3.3V或5V VDDIO POWER
内核供电电压,3.3V VDD_CORE POWER
信号地
VSS GND
表 2 FBC0409管脚描述
五.功能描述
FF通信控制器FBC0409遵循IEC 1158-2 标准的物理层规范,并可以很方便的
与INTEL的80188/80186系列、ARM系列及其兼容CPU配合,构建成为FF总线主、
从设备。芯片内置有MANCHESTER编码器、解码器,只要外接以简单的MAU
即可构成现场总线系统接口。芯片设计有自动码极性识别校正功能以及接收自动
帧校验、发送可选帧校验功能(FCS),并提供1MS、1MS/32、字节定时器和目
的地址匹配功能、帧控制字译码功能,减少在链路层CPU进行处理的开销。
为了防止节点过长时间占用总线,芯片中装有定时监视器,用以完成发送“闲
谈”控制的功能:当发送器占用总线超过512字节时间时关闭发送。为了提高网
络吞吐量,减轻CPU的处理负担,同时也为便于软件编程,芯片内部集成了DMA
控制器,分别用于现场数据的收发和数据链路层中的地址匹配。芯片内部集成有
4KByte的异步单口SRAM,用来对线路数据和地址表数据进行存储。内部功能模
块见下图。
图 3 FBC0409内部功能模块框图
注:在总线仲裁及双通道DMA控制器和中断处理模块中采用的时钟由CPU时钟SCLK 分频获得;而在地址匹配、数据收发、定时计数采用的是由SCLK或NCLK分频后得到的500KHZ时钟;CPU通过异步方式读写内部SRAM和寄存器。
1 CPU接口模块
CPU接口模块主要提供芯片与CPU之间的总线接口,外部CPU通过CPU 接口来访问内部SRAM和寄存器。支持两种寻址方式,独立寻址和共享寻址。根据片选和地址信号,译码产生访问内部SRAM片选信号和读写信号;根据片选和读写信号,产生相应的选择信号选通CPU和SRAM或寄存器之间的数据通路。数据总线(PB_DATA[7:0])输出为三态方式控制,只有当CPU读写内部SRAM 或寄存器时,才使能输出。CPU与FBC0409的通信主要靠po_rdy信号调节时序,操作过程中要保证CPU可以识别该信号并可给与响应。当CPU读写有效时,若内部RAM忙,则给出PO_RDY信号,当内部RAM操作结束,PO_RDY信号同时结束。
2 寄存器处理模块
寄存器组模块处于CPU接口与内部逻辑之间。寄存器组实现了丰富的寄存器,CPU通过读写这些寄存器来控制和实现总线通信功能。CPU采用异步方式访问寄存器,CPU访问寄存器时(独立寻址方式且PB_REGCS_N有效时,或者共享寻址方式且高位地址译码选中寄存器时),在写信号PB_WR上升沿时,根据地址译码将输入数据写入寄存器;在读信号PB_RD下降沿时,根据地址译码读出寄存器的值送到数据总线上。
4 定时器模块
在定时器模块中,对由SCLK或NCLK分频得到的500KHZ时钟进行计数,
提供数据链路层处理所需的3个定时器:1MS、1/32MS、256US(字节定时)。三个定时器均为16位,采用自由运行方式(FREE RUNNING)计数。定时器在计满溢出回零时产生定时器溢出中断。每个定时器都设置一个相应的16位的计数值比较寄存器,每当定时器当前计数值和计数值比较寄存器相等时,便产生定时器比较中断。在CPU读取定时器值时,首先写寄存器地址0x1f,然后再读相应的定时器。
5 DMA控制器模块
DMA控制器模块是芯片内部的重要模块,它使得通信过程在芯片内部自动完成,而无需CPU干预,由此大大减轻了CPU的处理负担。DMA控制器包含2个通道:读操作、写操作,分别接受来自发送、接收和地址识别的数据传输请求,然后给出对应的内部总线信号直接读写内部SRAM。在DMA控制器访问内部SRAM期间,如果外部CPU也要访问内部SRAM,将会由总线仲裁模块置PO_READY为低,迫使外部CPU进入等待状态。
6 总线仲裁模块
总线仲裁模块处理内部总线请求、外接CPU的总线请求之间的切换。当在CPU操作期间有DMA请求时,DMA控制器等待当前CPU操作完成;当DMA操作期间CPU访问RAM,则置PO_READY为低有效;当只有DMA请求时不需置PO_READY为低,DMA控制器控制总线;没有DMA请求时将总线判给CPU。
7. 地址识别模块
地址识别模块负责消息模式和目的地址识别。ARME有效后使能目的地址识别模式,否则只进行帧控制字译码,禁止目的地址识别。帧控制字译码得到消息类型信息,包括收到帧控制字指示、广播帧、PSA帧指示和帧码FRAME_CODE;此外,还获知目的地址类型信息,无目的地址、节点地址、NS 地址或HL地址。根据目的地址类型信息进行目的地址匹配,若是节点地址,直接与节点地址寄存器NODE_ID[7:0]比较,送出地址匹配通知AMOF;若为HL 或NS地址,则采用DMA方式与SRAM中的NS或HL地址表逐一比较,直到匹配成功给出AMOF指示或查表结束给出ETDF指示。
8 接收模块
接收模块的功能是接收来自FF总线的数据帧,提取出数据字段供上层进一步处理。主要工作包括时钟同步、识别定界码、曼码解码、串并转换、帧校验等,同时生成相应的状态和中断信息。通过配置命令寄存器可以控制接收模块工作,包括接收使能控制、半双工/全双工控制、环回设置等。接收方式可以选择CPU 中断或DMA方式,可以通过接收DMA使能(DRE)来控制。CPU中断方式指
的是,每收到一个字节,就会产生接收寄存器满中断(RDRF_INT),外部CPU 响应该中断读走数据字节,如此循环往复,直到接收完成。而DMA方式指的是,每收到一个字节,就通过DMA的方式直接写入到内部SRAM,循环往复,待接收结束后,CPU可以一次从内部SRAM读取全部数据。在实际使用时,推荐使用DMA方式进行接收,以减轻CPU的处理负担。
9 发送模块
发送模块负责将CPU交付的发送数据进行处理,然后按照规定的帧结构发送到FF总线上。主要工作包括增加前导码和定界码、并串转换、帧校验生成、曼码编码等,同时生成相应状态和中断信息。通过配置命令寄存器可以控制发送模块工作,包括发送使能控制、前导码字节数、发送CRC帧校验使能等。发送方式也有两种,CPU中断和DMA方式,可以通过发送DMA使能(DTE)来控制。CPU中断方式指的是,发送模块每发送一个字节,就会产生发送数据寄存器空(TDRE_INT)中断,CPU响应改中断,再次写入新的发送字节,如此循环往复直到发送结束。DMA方式指的是,首先将要发送的数据帧全部写入内部SRAM中,每发送发送一个字节,就通过DMA方式写入下一个数据字节,如此往复直到接收结束。实际使用时,推荐使用DMA方式发送。开始发送前,必须通过对发送数据寄存器(TRM_REG)进行一次无效写来启动发送。发送正常结束有2个来源:DMA控制器发送字节计数满、发送寄存器超过一字节时间没有数据写入。发送具有禁止“闲谈”功能,当发送帧长度超过512字节时,发送模块将结束发送,同时生成发生“闲谈”中断(JI_INT)。
A 时钟产生模块
时钟产生模块用于产生芯片工作所需的内部时钟,包括用于DMA控制器、中断处理的内部快时钟和用于FF收发处理的500KHz时钟。在时钟模式使能时(MD[1:0]≠00),内部快时钟由SCLK根据系统时钟分频比寄存器(CLK_DIV)决定,表达式=SCLK/(CLK_DIV +1)。由于访问内部异步SRAM有确定读写时间要求,所以要求获得的内部快时钟必须小于8MHz,例如对于输入时钟32MHZ,则CLK_DIV的值应大于0x3,而如果输入时钟是20MHZ,则CLK_DIV的值必须大于0x1。这里仅支持2幂次分频,即1/2/4/8/16次分频(CLK_DIV值分别为0/1/3/7/15)。500KHz时钟由SCLK、NCLK和命令寄存器2决定,CLKSEL选择时钟源作为FF总线输入主时钟ICLK:0选SCLK,1选NCLK,利用MD[1:0]和BR[4:0]得到500KHz时钟(16倍于收发FF总线速率),用于发送、接收和地址识别。MD定义:00:停止时钟,01:H1速率,其余无效。BR定义:CLK500 =ICLK/(BR+1),仅支持2幂次分频,BR只能取值0/1/3/7/15/31。
B 中断处理模块
中断处理模块用于根据内部状态信号产生相应的中断信号,同时还提供中断
清零、中断屏蔽机制。中断清零采用写1清零方式。中断屏蔽则采用外部屏蔽方式,屏蔽不能禁止内部中断状态的产生。
六.地址映射
FF通信控制芯片的地址空间分为两部分,一部分为内部4K异步SRAM地址,另一部分为寄存器地址。片内支持两种模式寻址:一种是寄存器和RAM独立编址,也就是两个片选信号(PB_REGCS_N和PB_RAMCS_N)分别对应各自的地址空间,这里称为方式一;另一种是统一编址的方式,即只有一个片选,选中本芯片时同时选中片内REGISTER和RAM,靠内部的地址译码区分,这里称为方式二。对于方式一,寄存器片选有效时候RAM片选无效,此时寄存器地址为6’H00~6’H3F;RAM片选有效的时候寄存器片选无效,RAM的地址空间为12’H000~12’HFFF(12’d4095)。对于方式二,两个片选同时有效,寄存器的寻址空间为12’HFC0~12’HFFF,操作的时候可以高6位全1译码得到寄存器片选REG_CSN,仍然是按照6位有效地址进行寄存器操作;RAM的寻址空间与方式一的相同,但是寄存器占用的地址空间损失掉了,寻址12’H000~12’HFBF (12’D4032)。在使用的时候推荐采用两个片选分别有效的方式。
七. FBC0409寄存器
FBC0409内部寄存器如下表。
偏移
地址
名称描述属性备注
TRM_REG[7:0] 发送数据寄存器WO 0x00
RCV_REG[7:0] 接收数据寄存器RO
DATA REG
FB_CMD0[5:0]
PSE[1:0] 0x01[1:0],前导序列长度配置
TFCE 0x01[2],发送数据帧校验使能
TDE 0x01[3],发送数据使能
FDM0x01[4],全双工控制
0x01
RDE 0x01[5],接收数据使能
W/R CMD REG
FB_CMD1[4:0]
ARME 0x02[0],地址识别模式使能
DRE0x02[1],DMA接收使能
DTE0x02[2],DMA发送使能
LOOPBK 0x02[3],环回控制
0x02
MAU_ENF 0x02[4],MAU发送使能指示W/R
CMD REG
FB_CMD2[7:0]
BR[4:0] 0x03[4:0],得到500K内部时
钟分频比
0x03
MD[1:0] 0x03[6:5],时钟模式设定,00:
WO CMD REG
静默
CLKSEL 0x03[7],时钟源选择
ISR_MSTR[4:0]
CISF 0x03[0],中断位来自通信控制
部分
AISF 0x03[1],中断来自地址识别
TISF 0x03[2],TIMER/CLOCK为中
断源
ERRF 0x03[3],发生错误
0x03
EIF 0x03[7],PI_INT为中断源RO
INTERRUPT
MASTER
ISR0[7:0]
TDRE_INT 0x04[0],发送数据寄存器空中
断
TIF_INT 0x04[1],数据传送完毕中断
RIF_INT 0x04[2],数据接收完成
REDF_INT 0x04[3],数据结束边界
RCV_END_DLMT
REF_INT 0x04[4],数据寄存器溢出
RSDF_INT 0x04[5],数据起始边界
RCV_START_DLMT
RAF_INT 0x04[6],FF总线发现数据
(RCV ACTV)
0x04
RDRF_INT 0x04[7],接收数据寄存器满
RC INT0
0x04 INT_CLR0[7:0] 对应相同地址中断的写1清零WO CLEAR INT0 ISR1[3:0]
BMDF_INT 0x05[0],广播消息指示
AMDF_INT 0x05[1],探测到地址匹配
EOTF_INT 0x05[2],地址表查找完毕指示0x05
FCF_INT 0x05[3],帧控制码识别指示RC
INT1
0x05 INT_CLR1[3:0] 对同一地址的中断寄存器的写
1清零
WO CLEAR INT1
ISR2[5:0]
MS1_32COF_INT 0x06[0],1/32MS计数溢出回0
MS1_32CF_INT 0x06[1],1/32MS计数达到设
定比较值
MS1COF_INT 0x06[2],1MS计数溢出回0
MS1CF_INT 0x06[3],1MS计数达到设定值
OOF_INT 0x06[4],字节计数溢出回0
0x06
OCF_INT 0x06[5],字节计数达到设定值
RC INT2
0x06 INT_CLR2[5:0] 对同一地址的中断寄存器的写
1清零
WO CLEAR INT2 ISR3[6:0]
0x07
LSDF_INT 0x07[0]接收前定界错误
RC INT3
LEDF_INT 0x07[1]接收后定界错误
LNGFRM_INT 0x07[2]接收超长帧错误
MDERR_INT 0x07[3]接收时曼码解码错误
LCD_INT 0x07[4]接收时丢失CD错误
TRM_FAIL_INT 0x07[5]发送失败
JI_INT 0x07[6]发送定时器超时,闲谈
指示
WO CLEAR INT3 0x07 INT_CLR3[6:0] 对同一地址的中断寄存器的写
1清零
0x08 ISR0_MSK[7:0] 收发产生的中断INT0的掩码W/R
W/R
0x09 ISR1_MSK[3:0] 地址识别与帧码译码产生中断
的掩码
W/R
0x0A ISR2_MSK[5:0] 定时功能产生中断INT2的掩
码
W/R
0x0B ISR3_MSK[6:0] 发送接收错误产生中断INT3
的掩码
0x0C TRM_BYTECNT[13:8] 发送字节计数器高字节W/R
0x0D TRM_BYTECNT[7:0] 发送字节计数器低字节W/R
W/R
0x0E TRM_BUFPTR[13:8] DMA发送数据块地址指针高
字节
W/R
0x0F TRM_BUFPTR[7:0] DMA发送数据块地址指针低
字节
0x10 无留作后用
0x11 无留作后用
W/R
0x12 RCV_BUFPTR[13:8] DMA接收数据地址指针高字
节
W/R
0x13 RCV_BUFPTR[7:0] DMA接收数据地址指针低字
节
0x14 无留作后用
0x15 无留作后用
0x16 MATCH_VECT[13:8] 地址匹配向量高字节RO
0x17 MATCH_VECT[7:0] 地址匹配向量低字节RO
0x16 ADR_TABNS[13:8] NS地址表指针高字节WO
0x17 ADR_TABNS[7:0] NS地址表指针低字节WO
0x18 FRAME_CODE[4:0] 接收的帧码RO
0x19 FRAME_CONTRL[7:0] 接收的帧控制码RO
0x18 ADR_TABHLNS[13:8] HLNS地址表指针高字节WO CONFIGURE 0x19 ADR_TABHLNS[7:0] HLNS地址表指针低字节WO CONFIGURE 0x1A 无留作后用
0x1B NODE_ID[7:0] 节点识别符地址W/R CONFIGURE STATUS0[7:0]
TDRE_STAT 0x1C[0],发送数据寄存器空状
态
TIF_STAT 0x1C[1],数据传送完毕状态指
示
FCSF__STAT 0x1C[2],帧校验正确
REDF_STAT 0x1C[3],数据结束边界
RDEF_STAT 0x1C[4],接收数据溢出
RCV_OVERFLOW
RSDF_ STAT 0x1C[5],数据起始边界
RCV_START_DLM
RAF_ STAT 0x1C[6],FF总线发现数据
(RCV ACTV)
0x1C
RDRF_STAT 0x1C[7],接收数据寄存器满
RO STATUS0
STATUS1[7:0]
RBMF_STAT 0x1D[0],探测到广播消息
AMOF_STAT 0x1D[1],地址匹配通知
ETDF_STAT 0x1D[2],查表结束
RFCF_STAT 0x1D[3],接收到帧控制字
RPSAF_STAT 0x1D[4],接收到PSA帧
RNAF_STAT 0x1D[5],接收到节点地址(8
位地址)
NS_STAT 0x1D[6],NS地址请求(要求16
位)
0x1D
HL_STAT 0x1D[7],HL 地址请求(32位
地址)
RO STATUS1
STATUS2[6:0]
LSDF_STAT 0x1E[0],接收前定界出错
LEDF_STAT 0x1E[1],接收后定界出错
LNGFRM_STAT 0x1E[2],接收到超长帧
MDERR_STAT 0x1E[3],曼码解码出错
LCD_STAT 0x1E[4],接收丢失载波
LTAF_STAT 0x1E[6],有查表请求
0x1E
RSPF_STAT 0x1E[7],信号极性颠倒指示RO
STATUS2
0x1F TIMER_LATCH 定时器锁存控制
0x20 MS1_32CNT[15:8] 1/32MS计数值高字节RO 0x21 MS1_32CNT[7:0] 1/32MS计数值低字节RO 0x20 MS1_32COMP[15:8] 1/32MS比较值高字节WO 0x21 MS1_32COMP[7:0] 1/32MS比较值低字节WO 0x22 MS1_CNT[15:8] 1MS计数值高字节RO 0x23 MS1_CNT[7:0] 1MS计数值低字节RO 0x22 MS1_COMP[15:8] 1MS比较值高字节WO 0x23 MS1_COMP[7:0] 1MS比较值低字节WO 0x24 OCT_CNT[15:8] 字节计数值高字节RO 0x25 OCT_CNT[7:0] 字节计数值低字节RO 0x24 OCT_COMP [15:8] 字节比较值高字节WO
0x25 OCT_COMP [7:0] 字节比较值低字节WO
0x26 CLK_DIV [3:0] RAM读写脉冲宽度配置WR
0x27 测试固定写0x01 W/R
表 4 FBC0409内部寄存器列表
根据寄存器功能不同,把所有的寄存器分为8组:发送寄存器、接收寄存器、命令寄存器、中断寄存器、DMA寄存器、地址识别寄存器、状态寄存器和定时器寄存器。如下图所示:
图 5 FBC0409内部寄存器分组
发送寄存器(TRM_REG)——地址0x00
向现场总线发送数据可以有两种方式,CPU方式和DMA方式。CPU方式就是通过CPU写发送寄存器来发送,CPU写00地址寄存器,那么数据就被写入发送寄存器,为了避免发生数据过载以及确保发送模块准备好,需要读取状态TDRE(状态寄存器0,地址0x1C)或中断状态TDRE_INT(中断状态寄存器0,地址0x04),如果TDRE=1或TDRE_INT=1,就表明发送模块发送寄存器已空,可以写入新的数据,同时清除中断,等待下一次发送。至于DMA方式,这一过程是自动进行的,数据从预定义好的片内存储器中读取。另外需要说明的是,无论是CPU方式还是DMA方式,都需要在开始时由CPU写发送寄存器来启动发送模块以进行相应的初始化。无论是CPU方式还是DMA方式,发送空闲状态下向该寄存器写入时,第一个写操作被认为启动发送,数据无效,第二个数据才认为是真正的数据。在DMA发送方式下,如果正在发送数据,对该寄存器的写是无效的。
接收寄存器——地址0x00
接收寄存器存储从现场总线接收来的数据,CPU读寄存器00地址,读的就是接收到的数据。同样,为了避免发生接收欠载(发生帧错误)或过载(丢失帧数据),CPU也必须通过读取状态RDRF(状态寄存器0,地址0x1C)或中断状态RDRF_INT(中断状态寄存器,地址0x04)判断,如果RDRF=1或者RDRF_INT =1,就表明接收模块收到一个新的字节数据,对于CPU方式,必须保证及时的读取接收模块的接收到数据,以免发生接收过载的情况。而在DMA方式下,接收是自动进行的,接收到的数据将被存储到预设定好的片内RAM缓冲区中。
命令寄存器
控制寄存器是用于设定FF芯片的工作方式和总体的控制,包括有三个寄存器命令寄存器0-3,下面分别介绍。
命令寄存器0(FB_CMD0)——地址0x01
0 0 RDE FDM TDE TFCE PSE[1:0]
RDE-RECEIVE DATA ENABLE 控制从现场总线接收数据,0关闭接收,1打开。
FDM-FULL/HALF DUPLEX MODE 全双工/半双工接收模式选择,1双工接收,0则半双工接收。
TDE-TRANSMIT DATA ENABLE 控制向现场总线发送数据,0关闭发送,1打开。
TFCE-TRANSMIT FRAME CHECK ENABLE 使能发送帧校验方式,0:不进行帧校验,1:添加校验字。PSE[1:0]-PREAMBLE SEQUENCE ENABLE 同步码序列字节个数选择,具体如下
00:1字节;01:2字节;10:3字节;11:4字节。
命令寄存器1(FB_CMD1)——地址0x02
ARME
DRE
MAU_ENF LOOPBK DTE
0 0 0
MAU_ENF-MAU ENABLE FLAG MAU使能标志,为1表示所接MAU使能端为高有效,为0表示所接MAU使能端为低有效。
LOOPBK-LOOPBACK MODE FLAG内环回控制,为1则FF发送和接收构成内环回而不向总线发送数据,为0则不进行内环回。
DTE-DMA TRANSMIT ENABLE 使能发送DMA,0:关闭DMA发送,1:打开DMA发送。
DRE-DMA RECEIVE ENABLE 使能接收DMA,0:关闭DMA接收,1:打开DMA接收。
ARME-ADDRESS RECOGNITION MODE ENABLE 使能地址识别模式,1有效。
命令寄存器2(FB_CMD2)——地址0x03
MD1 MD0 BR4 BR3 BR2 BR1 BR0 CLKSEL
CLKSEL-CLOCK SOURCE SELECTS 线路时钟源选择,0:CPU时钟SCLK,1:选择时钟NCLK
MD1-MD0-CLOCK MODE SELECTS 时钟模式选择,为11时关闭内部时钟,其余时现场总线通信速率为
31.25KHZ。
BR[4:0]-BAUD RATE SELECT 波特率分频因子,对由CLKSEL选择的时钟进行分频得到内部使用的500K
时钟。将输入时钟分频为线路时钟500K的表达式=输入时钟/(BR+1),例如对于输入时钟16MHZ,则
BR4-BR0的值应为11111。这里仅支持2幂次分频,即1/2/4/8/16/32次分频,相应的BR值分别为0/1/3/7/15/31。
命令寄存器3(FB_CMD3)——地址0x26
0 0 0 0 CLK_DIV[3:0]
CLK_DIV[3:0]-内部时钟分频因子,对由SCLK时钟进行分频得到内部使用的4~6M时钟,表达式=输入时钟/(CLK_DIV +1)。例如对于输入时钟32MHZ,则CLK_DIV的值应为0x7,而如果输
入时钟是20MHZ,则CLK_DIV的值应为0x3。这里仅支持2幂次分频,即1/2/4/8/16次分
频,相应的CLK_DIV值分别为0/1/3/7/15。
中断寄存器
FF芯片提供了多个中断寄存器用于中断控制,包括有中断主寄存器、中断状态寄存器0-3,
中断屏蔽寄存器0-3,下面分别介绍。
中断主寄存器(ISR_MSTR)——地址0x03
中断主寄存器指示产生中断的中断源。
EIF 0 0 0 ERRF TISF AISF CISF
EIF-EXTERNAL INTERRUPT FLAG 外部中断标志,当PI_INT=0时有效。
ERRF—发生错误引起的中断,ISR3中任意比特有效时该比特为高电平。
TISF-TIMER INTERRUPT SOURCE FLAG 定时器中断主标志,当中断寄存器2的6个定时器中断状态任一个有效为1时,TISF有效置1
AISF-ADDRESS INTERRUPT SOURCE FLAG 地址识别中断主标志,当中断状态寄存器1的4个地址识
别中断状态任一个有效时,AISF有效置1
CISF-COMMUNICATION INTERRUPT SOURCE FLAG 通信中断主标志,当中断状态寄存器0的8个现场总线发送接收中断状态任一个有效时,CISF有效置1
说明:当中断主寄存器的4个中断指示任一个为1时,FF芯片中断输出引脚PO_INT为有效低。
中断状态寄存器0(ISR0)——地址0x04
中断状态寄存器0是FF芯片在现场总线通信过程中产生的中断状态,中断状态寄存器0的清零由CPU写
清零来实现,当CPU写地址0x04时,CPU写入数据的对应位为1,则中断状态寄存器0相应位被清零。RDRF_INT RAF_INT RSDF_INT REF_INT REDF_INT RIF_INT TIF_INT TDRE_INT
RDRF_INT-RECEIVE DATA REGISTER FULL 接收寄存器满中断标志,当接收模块已接收到一个完整的字节时,RDRF_INT有效置1
RAF_INT-RECEIVE ACTIVE FLAG 接收激活中断标志,当检测线路上有载波(CD)信号时,RAF_INT 有效置1
RSDF_INT-RECEIVE START DELIMITER FLAG 收到帧前定界码中断标志当检测到帧前定界码时,RSDF_INT有效置1。
REF_INT-RECEIVE ERROR FLAG 接收溢出中断标志,当接收发生字节溢出时,REF_INT有效置1
REDF_INT-RECEIVE END DELIMITER FLAG 收到帧后定界码标志,当收到帧后定界码时,REDF_INT 有效置1,表明已经收完一帧数据。
RIF_INT-RECEIVE IDLE FLAG 接收空闲中断标志,当接收完一帧数据时,RIF_INT有效置1
TIF_INT-TRANSMIT IDLE FLAG 发送空闲中断标志,当发送完一帧数据时,TIF_INT有效置1,向CPU 表明可以发送新的一帧。
TDRE_INT-TRANSMIT DATA REGISTER EMPTY 发送数据寄存器空中断标志,当发送模块申请新的一个字节时,TDRE_INT有效置1。
中断状态寄存器1(ISR1)——地址0x05
中断状态寄存器1是在地址识别过程中产生的中断状态,中断状态寄存器1的清零由CPU写1清零来实现,
当CPU写地址0x05时,CPU写入数据的对应位为1,则中断状态寄存器1相应位被清零。
BMDF_INT
FCF_INT EOTF_ING AMDF_INT
0 0 0 0
FCF_INT-FRAME CONTROL FLAG 检测到帧控制码中断标志,当地址识别模块收到帧控制字时,FCF_INT有效置1
EOTF_INT-END OF TABLE FLAG 地址表结束中断标志,当地址识别模块查表操作检测到地址表结束标志时(连0地址),ETOF_INT有效,置1
AMDF_INT-ADDRESS MATCH DETECTION FLAG 检测到地址匹配中断状态,当地址识别模块检测到目的地址与本节点地址或地址表中的表项匹配时,AMDF_INT有效置1
BMDF_INT-BROADCAST MESSAGE DETECTION FLAG 检测到广播帧中断状态,当地址识别模块帧控制译码结果为广播帧时,BMDF_INT有效置1
中断状态寄存器2(ISR2)——地址0x06
中断状态寄存器2是由内部定时器产生的中断状态,中断状态寄存器2的清零由CPU写清零来实现,当CPU写地址0x06时,CPU写入数据的对应位为1,则中断状态寄存器1相应位被清零。
1OF
1/32CF
1/32OF
1CF
0 0 OCF
OOF
OCF-OCTET COUNTER FLAG 字节定时器计数中断,当字节定时器计数器等于字节定时器比较寄存器
时,OCF有效置1。RESET时,由于计数器值为0,比较寄存器值也为0,故此时该位有效,使用时需提
前清零。
OOF-OCTET OVERFLOW FLAG 字节定时器溢出中断,当字节定时器计数器等于0xFFFF溢出时,OOF 有效置1
1CF-1MS COUNTER FLAG 1MS定时器计数中断,当1MS定时器计数器等于1MS定时器比较寄存器时,1CF有效置1。初始值原因及处理同OCF。
1OF-1MS OVERFLOW FLAG字节定时器溢出中断,当字节定时器计数器等于0xFFFF溢出时,OOF有效置1
1/32CF-1/32MS COUNTER FLAG 1/32MS定时器计数中断,当1/32MS定时器计数器等于1/32MS定时器比较寄存器时,OCF有效置1。初始值原因及处理同OCF。
1/32OF-1/32MS OVERFLOW FLAG 1/32MS定时器溢出中断,当1/32MS定时器计数器等于0xFFFF溢出时,OOF有效置1。
中断状态寄存器3(ISR3)——地址0x07
中断状态寄存器3是由FF芯片在现场总线通信过程发生错误的中断状态,中断状态寄存器3的清零由CPU 写1清零来实现,当CPU写地址0x07时,CPU写入数据的对应位若为1,则中断状态寄存器1相应位被清零。
0 JI_INT TRM_FAIL_INT LCD_INT LNGFRM_INT MDERR_INT LEDF_INT LSDF_INT JI_INT-JABBER INDICATION 闲谈指示中断标志,当发送模块发送定时器超时时,JI_INT有效置1 TRM_FAI_INT-TRANSMIT FAILUE 发送失败中断标志,当发送过程由于无任何数据发送时,
TRM_FAIL_INT有效置1
LCD_INT-LOST CARRIER DETECTION接收载波丢失错误中断标志当接收过程中发生CD丢失时,LCD_INT有效置1
LNGFRM_INT-LONG FRAME 接收超长帧错误中断标志,当接收模块接收定时器超时时,LNGFRM_INT 有效置1
MDERR_INT-MANCHESTER DECODE ERROR接收曼码解码错误中断标志,当接收模块接收过程收到不明N+或N-时,MDERR_INT有效置1
LEDF_INT-LOST END DELIMITER FLAG接收丢失帧后定界码中断标志,当接收模块接收过程中发现帧后定界错误时,LEDF_INT有效置1
LSDF_INT-LOST START DELIMITER FLAG接收丢失帧前定界码中断标志,当接收模块在收到前导码之后发现帧前定界码错误时,LSDF_INT有效置1
中断屏蔽寄存器0(ISR0_MSK)——地址0x08
中断屏蔽寄存器0是用于屏蔽中断状态寄存器0的,相应位定义同中断状态寄存器0,如果某位为1,则使能中断状态寄存器0的相应位;如果为0,则清除/屏蔽相应位中断。
中断屏蔽寄存器1(ISR1_MSK)——地址0x09
中断屏蔽寄存器1是用于屏蔽中断状态寄存器1的,相应位定义同中断状态寄存器1,如果某位为1,则使能中断状态寄存器1的相应位;如果为0,则清除/屏蔽相应位中断。
中断屏蔽寄存器2(ISR2_MSK)——地址0x0A
中断屏蔽寄存器2是用于屏蔽中断状态寄存器2的,相应位定义同中断状态寄存器2,如果某位为1,则使能中断状态寄存器2的相应位;如果为0,则清除/屏蔽相应位中断。
中断屏蔽寄存器3(ISR3_MSK)——地址0x0B
中断屏蔽寄存器3是用于屏蔽中断状态寄存器3的,相应位定义同中断状态寄存器3,如果某位为1,则使
能中断状态寄存器3的相应位;如果为0,则清除/屏蔽相应位中断。
配置寄存器
发送字节计数器(TRM_BYTECNT[13:0])——地址0x0C-0x0D
DMA模式下控制发送数据的字节个数。在CPU更改寄存器时,一定要先写高字节,后写低字节,连续写。
发送缓冲区数据地址(TRM_BUFPTR[13:0])——地址0x0E-0x0F
DMA模式下存放发送缓冲区数据的首地址。在CPU更改寄存器时,一定要先写高字节,后写低字节,连续写。
接收缓冲区地址(RCV_BUFPTR[13:0])——地址0x12-0x13
DMA模式下指向接收数据的下一个地址,写入一个字节,则加1。在CPU更改寄存器时,一定要先写高字节,后写低字节,连续写。本寄存器写入时表示接收数据存放RAM的首址,读出时表示数据存放当前地址加1。
地址匹配向量寄存器(MATCH_VECTOR[13:0])——地址0x16-0x17
地址比配向量,只读,指向地址识别模块地址表查表操作的下一个地址,当发生地址匹配时(读状态寄存器1或中断状态寄存器1),地址比配向量指向的就是地址表中发生匹配的下一个字节地址。
NS地址表地址寄存器(ADR_TABNS[13:0])——地址0x16-0x17
NS地址表地址,只写,是16位地址表首地址,如果接收帧目的地址是NS类型,则将目的地址和NS地址表逐项地址进行比较,直至匹配成功或地址表结束(NS地址表以3个连续“0x00”标志结尾)。在CPU更改寄存器时,一定要先写高字节,后写低字节,连续写。
帧控制字寄存器FRAME_CNTRL[7:0] ——地址0x18
帧控制字寄存器,只读,存放接收帧的协议数据单元的第一个字节帧控制字节,其中包含帧类型信息。
帧码寄存器FRAME_CODE[4:0] ——地址0x19
帧码寄存器,只读,存放的是通过对帧控制字进行译码而得到的5BIT信息,一旦产生收到帧控制字状态或中断状态,则CPU可以读取帧码以判断是何种类型的帧。对应表如下:
FCODE MESSAGE FUNCTION FCODE MESSAGE FUNCTION
00000 ESTABLISH CONNECTION 1 10000 DATA TRANSFER 5
00001 ESTABLISH CONNECTION 2 10001 STATUS RESPONSE
00010 DISCONNECT CONNECTION 1 10010 COMPEL TIME
00011 DISCONNECT CONNECTION 2 10011 TIME DISTRIBUTION
00100 RESET CONNECTION 1 10100 ROUND-TRIP QUERY
00101 RESET CONNECTION 2 10101 ROUND-TRIP REPLY
00110 COMPEL ACKNOWLEDGE 1 10110 PROBE NODE
00111 COMPEL ACKNOWLEDGE 2 10111 PROBE RESPONSE
01000 COMPEL DATA 1 11000 PASS TOKEN
01001 COMPEL DATA 2 11001 EXECUTE SEQUENCE
01010 EXCHANGE DATA 1 11010 RETURN TOKEN
01011 EXCHANGE DATA 2 11011 REQUEST INTERVAL
01100 DATA TRANSFER 1 11100 CLAIM LAS
01101 DATA TRANSFER 2 11101 TRANSFER LAS
01110 DATA TRANSFER 3 11110 WAKE UP
01111 DATA TRANSFER 4 11111 IDLE
表 3 帧码/类型帧对应表
HLNS地址表地址寄存器(ADR_TABHLNS[13:0])——地址0x18-0x19
HLNS地址表地址,只写,是32位地址表首地址,如果接收帧目的地址是HLNS类型,则将目的地址和HLNS 地址表逐项地址进行比较,直至匹配成功或地址表结束(HLNS地址表以3个连续“0x0000”标志结尾)。
在CPU更改寄存器时,一定要先写高字节,后写低字节,连续写。
节点标志符寄存器(NODE_ID)——地址0x1B
节点标志符寄存器,存放8BIT节点标志符,如果接收帧目的地址是NODE ID类型,则无需进行DMA查表操作,直接将目的地址和节点标志符寄存器相比较即可。
状态寄存器
状态寄存器0(STATUS0)——地址0x1C
状态寄存器0是FF芯片在现场总线过程中产生的状态信息。
RDRF_STAT RAF_STAT RSDF_STAT REF_STAT REDF_STAT FCSF_STAT TIF_STAT TDRE_STAT RDRFT_STAT-RECEIVE DATA REGISTER FULL 接收寄存器满状态指示,接收模块已接收到一个完整的字节时,RDRF_STAT有效置1。
RAF_STAT-RECEIVE ACTIVE FLAG 接收激活状态指示,当检测线路上有载波(CD)信号时,RAF_STAT 有效置1
RSDF_STAT-RECEIVE START DELIMITER FLAG 收到帧前定界码状态指示当检测到帧前定界码时,RSDF_STAT有效置1。
REF_STAT-RECEIVE ERROR FLAG 接收溢出状态指示,当接收发生字节溢出时,REF_STAT有效置1 REDF_STAT-RECEIVE END DELIMITER FLAG 收到帧后定界码状态指示,当收到帧后定界码时,REDF_STAT有效置1,表明已经收完一帧数据。
FCSF_STAT-FRAME CHECK SEQUENCE FLAG 帧校验正确状态指示,当接收完一帧数据时,RIF_STAT 有效置1
TIF_STAT-TRANSMIT IDLE FLAG 发送空闲状态指示,当发送完一帧数据时,TIF_STAT T有效置1,向CPU表明可以发送新的一帧。
TDRE_STAT-TRANSMIT DATA REGISTER EMPTY 发送数据寄存器空状态指示,当发送模块申请新的一个字节时,TDRE_STAT有效置1。
状态寄存器1(STATUS1)——地址0x1D
状态寄存器1是在地址识别过程中产生的状态信息。
HL_STAT NS_STAT RNAF_STAT RPSAF_STAT RFCF_STAT ETDF_STAT AMOF_STAT RBMF_STAT HL_STAT-HIGH LINK FLAG收到帧目的地址类型为HLNS状态指示
NS_STAT-NODE SELECT FLAG收到帧目的地址为NS类型状态指示
RNAF_STAT-RECEIVE NODE ADDRESS FLAG 收到帧目的地址为NODE ID类型状态指示