在线免费观看成年人视频-在线免费观看国产-在线免费观看国产精品-在线免费观看黄网站-在线免费观看精品

產品分類

當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 其他傳感器 > 色度傳感器

類型分類:
科普知識
數據分類:
色度傳感器

PA,FF通訊芯片

發布日期:2022-04-18 點擊率:169

現場總線通信控制器 FBC0409
驅動程序開發手冊

周侗
中國科學院沈陽自動化研究所
2007 年10 月
現場總線通信控制器FBC0409 驅動程序開發手冊
中國科學院沈陽自動化研究所
1、概述
本文給出了現場總線通信控制器 FBC0409 驅動程序開發的相關說明及示例程序,包括
FBC0409 芯片初始化、發送和接收操作、定時器使用等內容。
FBC0409 性能說明、內部寄存器定義參見FBC0409 數據手冊。
2、FBC0409 初始化
FBC0409 初始化過程需要對命令寄存器、中斷屏蔽寄存器、DMA 接收數據區地址寄存
器等進行設置。
FBC0409 中命令寄存器1(FB_CMD1)中的ARME 位(位0)是地址識別設置位,寫0
表示關閉地址識別功能,寫1 則打開地址識別功能。需要說明的是,FBC0409 只支持FF H1
協議的地址識別功能,在開發PROFIBUS PA 時,必須關閉地址識別功能。
FBC0409 初始化過程中,需要通過命令寄存器0(FB_CMD0)中的TFCE(位2)來選擇
報文發送過程中是由用戶還是硬件進行報文校驗和的生成工作,報文校驗和有2 個字節。如
TFCE=0,表示在發送數據時需要由用戶自己在報文尾部添加2 個字節的校驗碼;TFCE=1
則表示硬件自動在報文尾部添加2 個字節的校驗碼。
FBC0409 在接收數據時,會自動進行校驗檢查,然后通過狀態寄存器0(STATUS0)中
的位2(FCSF_STAT)來顯示校驗結果。不管報文校驗結果對或錯,FBC0406 都會將報文上傳
給用戶,但用戶程序通過FCSF_STAT 會知道校驗的結果。
正常情況下,用戶程序將計算出來的報文長度再減去 2 個即得到報文真正長度。
用戶在測試硬件時,可以采用內回環方式進行。
示例代碼:
#define FBC0409_RAM 0x111111
#define FBC0409_REG 0x222222
unsigned short TD_ADDRESS , RXADDRESS;
void fbc0409_init(void)
{
int i;
TXADDRESS=0x0000; //發送緩沖區首址變量
RXADDRESS=0x0200; //接受緩沖區首址變量
//內環回測試

*(FB0409_REG+0x01) = 0x2d; //FB_CMD1。0010 1101/半雙工/preamble=2
*(FB0409_REG+0x02) = 0x16; //FB_ CMD2。0001 0110/DMA 收發
*(FB0409_REG+0x03) = 0x27; //FB_CMD2。0010 0111/CPU 時鐘/
*(FB0409_REG+0x26) = 0x00; //FB_CMD3。0000 0000/CLK_DIV=0
*(FB0409_REG+0x04) = 0xff; //寫中斷狀態寄存器,用于清除所有中斷
*(FB0409_REG+0x05) = 0xff;
*(FB0409_REG+0x06) = 0xff;
*(FB0409_REG+0x07) = 0xff;
*(FB0409_REG+0x08) = 0x26; // ISR0_MSK。幀前定界碼/接收空閑/發送空閑
*(FB0409_REG+0x09) = 0x00; // ISR1_MSK。關閉地址識別中斷
*(FB0409_REG+0x0A) = 0x02; // ISR2_MSK。打開1/32ms 比較中斷
*(FB0409_REG+0x0B) = 0x00; // ISR3_MSK。關閉錯誤中斷
*(FB0409_REG+0x12) = RXADDRESS>>8; //接收緩沖區首址,RCV_BUFPTR_HI
*(FB0409_REG+0x13) = RXADDRESS&0xFF; //接收緩沖區首址,RCV_BUFFPTR_LO
fbc0409_set32TimerCmp(32000); //此函數在定時器設置一節中給出
}
3、FBC0409 數據發送操作
FBC0409 支持兩種向現場總線發送數據的方式,即CPU 方式和DMA 方式。CPU 方式
是報文逐個字節發送,DMA 方式是成組數據發送,后者的效率要比前者高,在此推薦DMA
方式發送數據。
用戶程序在發送數據時,需要考慮以何種方式生成 2 個字節的校驗和。
下面僅給出了以 DMA 方式發送數據的示例。
示例代碼:
void fbc0409_send(unsigned char *paucData, unsigned char ucLength)
{
int i;
*(FB0409_REG+0x0E) = TXADDRESS>>8; //發送緩沖區首址,TRM_BUFFPTR_HI
*(FB0409_REG+0x0F) = TXADDRESS&0xFF; //發送緩沖區首址,TRM_BUFFPTR_LO
*(FB0409_REG+0x0C) = ucLength>>8; //發送數據字節數,TRM_DATACNT_HI
現場總線通信控制器FBC0409 驅動程序開發手冊
中國科學院沈陽自動化研究所
*(FB0409_REG+0x0D) = ucLength&0xff; //發送數據字節數,TRM_DATACNT_LO
//復制數據到發送緩沖區中
memcpy(FB0409_RAM+TXADDRESS, paucData, ucLength);
*(FB0409_REG+0x00) = 0xdd; //向發送寄存器(TRM_REG)寄存器寫入任意值,啟動發送
}
4、FBC0409 數據接收操作
FBC0409 使用一個中斷向量,通過判斷中斷主寄存器和中斷狀態寄存器0~3 中的狀態
位來確認已經發生的中斷事件。為了防止在中斷處理過程中又有新的中斷產生,在中斷處理
完成后需要再一次判斷是否有新的中斷發生。
FBC0409 接收數據的過程中,DMA 接收數據地址指針是變化的,每收到一個字節,其
值就加1,永遠指向存放下一個字節的空間。用戶程序在判斷接收到幀頭時,需要記錄下
DMA 接收數據地址指針的當前值uiframeHead,在判斷接收到幀尾時,需要記錄下DMA
接收數據地址指針的當前值uiframeEnd,然后用uiframeEnd 減去uiframeHead,然后再減
去2 就得到報文的長度,這是因為正常情況下FBC0409 接收到的數據中包括2 個字節的校
驗碼。
用戶程序判斷幀尾的方式有兩種,即接收空閑中斷和幀后定界碼中斷,可以通過設置中
斷狀態寄存器0(ISR0)來確定。這里我們推薦采用接收空閑中斷方式來判斷幀尾。
用戶程序在接收數據時,可以根據狀態寄存器 0(STATUS0)中的位2(FCSF_STAT)來
了解報文的校驗結果
這里給出了 DMA 方式接收數據的示例。
示例代碼:
unsigned short uiframeHead, uiframeEnd;
unsigned short uiRcvLen;
unsigned short aucRcvBuffer[256];

void fbc0409_int(void)
{
unsigned char ucISR_master, ucTemp;
ucISR_master = *(FB0409_REG+0x03); //保存中斷主寄存器值,操作過程中寄存器內容被修改
do
{
if(ucISR_master) // ucISR_master 值不為0 表示有中斷事件發生
{
現場總線通信控制器FBC0409 驅動程序開發手冊
中國科學院沈陽自動化研究所
if(ucISR_master & 0x04) //定時器中斷
{
ucTemp = *(FB0409_REG+0x06); //讀出并回寫中斷狀態寄存器2 來清定時
//器中斷
*(FB0409_REG+0x06) = ucTemp;
if (ucTemp & 0x02) // 1/32 ms 比較計數器中斷
{

}
}
if(ucISR_master & 0x01 == 0x01) //通信中斷
{
ucTemp = *(FB0409_REG+0x04); //讀出并回寫中斷狀態寄存器1 來清通信
//中斷
*(FB0409_REG+ 0x04) = ucTemp;
if(ucTemp & 0x20) //幀前定界碼中斷,表示接收到幀頭
{
uiframeHead = (*(FB0409_REG+0x12))*256+*(FB0409_REG+0x13);
uiRcvLen = 0;
}
if(ucTemp & 0x04) //接收空閑中斷,表示接收到幀尾
{
uiframeEnd = (*(FB0409_REG+0x12))*256+*(FB0409_REG+0x13);
uiRcvLen = (uiframeEnd - uiframeHead -2); //計算報文長度
//示例中設定最大報文長度為256。
if(uiRcvLen <= 256)
{
memcpy(aucRcvBuffer, FB0409_RAM+uiframeHead, uiRcvLen);
}
//重新設定接收緩沖區首址
*(FB0409_REG+0x12) = RXADDRESS>>8;
*(FB0409_REG+0x13) = RXADDRESS&0xFF;
}
if(ucTemp & 0x02) //發送空閑中斷
{
}
}
現場總線通信控制器FBC0409 驅動程序開發手冊
中國科學院沈陽自動化研究所
}
ucISR_master = *(FB0409_REG+0x03);
}while(ucISR_master);
}
5、FBC0409 定時器應用
FBC0409 提供了三個定時器:1ms、1/32ms 和octet,可以充分滿足用戶的需求。每種
定時器都有溢出操作和比較操作,當每種定時器計數值達到0xFFFF 時,即產生溢出中斷;
當定時器計數值達到相應比較寄存器的值時,即產生比較中斷,具體是否產生中斷需要看相
應中斷屏蔽器是的設置。
需要說明的是,1/32ms 定時器是每個計數的單位是1/32ms ;1ms 定時器中每個計數
的單位是1ms;octet 定時器中每個計數的單位是8*1/32ms,即1/4ms。
FBC0409 只要一上電,其各個計數寄存器即開始工作,其計數值時刻在變化。
用戶程序定時時,需要先讀出相應計數值寄存器的當前值 StartTime,加上定時長度
Interval,得到EndTime,將EndTime 寫入相應的比較寄存器中,當計數值寄存器的值達到
EndTime 時,即產生相應的定時溢出中斷。參見中斷狀態寄存器2(ISR2)說明。
用戶程序在讀取計數值時,需要先鎖存計數器,向TIMER_LATCH(0x1F)寄存器中寫入
任意值即可實現內部定時器鎖存操作,然后再讀計數器值。
示例代碼:

void fbc0409_set32TimerCmp(unsigned short uInterval)
{
unsigned short uStartTime = 0,uEndTime = 0;
unsigned char ucReg = 0;
//向TIMER_LATCH 寄存器中寫入任意值,以鎖存計數器
*(FB0409_REG+0x1F) = 0x01;
//讀1/32ms 計數器中當前計數值
uStartTime = *(FB0409_REG+0x20)*256 +*(FB0409_REG+0x21);
//用當前計數值加上定時長度即得計數器結束時的值
uEndTime = uStartTime + uInterval;
//將計數器結束時的值寫入1/32ms 比較計數器中,
*(FB0409_REG+0x20) = (uEndTime >> 8) & 0xff; //高字節
*(FB0409_REG+0x21) = uEndTime & 0xff; //低字節
現場總線通信控制器FBC0409 驅動程序開發手冊
中國科學院沈陽自

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
一炕四女被窝交换啪啪| 亚洲人成在线观看无码| 亚洲熟妇色XXXXX欧美老妇 | 国产免费看MV大片的软件| 国外精产品W灬源码16| 久久久亚洲裙底偷窥综合| 人妻AV一区二区三区| 他把胸罩撕了捏胸吃奶| 亚洲国产无套无码AV电影 | 美女扒开腿让男人桶爽揉| 人人爽人人澡人人人妻、百度| 无码国产孕妇一区二区免费AV| 亚洲AV永久无码精品三区在线4 | 久久久久亚州AⅤ无码专区首| 免费少妇A级毛片| 日韩无矿砖2021中文字幕| 亚洲AⅤ天堂AV天堂无码APP| 一道本在线视频不卡| 差差差软件大全APP推荐免费| 国产老妇伦国产熟女老妇视频| 久久夜色精品国产噜噜麻豆 | 麻豆国产MV视频| 色777狠狠狠综合| 亚洲色成人网站WWW永久| 把腿张开我要CAO死你在线观看| 国产丝袜无码一区二区三区视频| 老师你的好软水好多的时候图片 | 伊人久久大香线蕉午夜AV| 大陆精大陆国产国语精品| 精品久久伊人99热超碰| 青青青国产免A在线观看| 亚洲AV永久爆乳无码5区| GRANSREMEDY老太太| 国内精品免费久久久久电影院97| 欧美黑人成人www在线观看| 性XXXX欧美老妇胖老太性多毛| 12孩岁女A处破娇小| 国产精品美女WWW爽爽爽视频| 美女裸体十八禁免费网站| 无码人妻av一区二区三区毛片| 中国女人内射69XXXXⅩ视频| 国产精品爽爽VA在线观看网站| 男生把QQ放进女生的QQ里在线| 无码中文精品视视在线观看| 77777亚洲午夜久久多喷| 国精产品W灬源码1688网站 | 林静公交车被做到高C| 无码人妻丰满熟妇| TAP TAP下载官方正版| 精品久久久久久亚洲中文字幕| 日欧 片内射AV在线影院| 荫道BBWBBB高潮潮喷| 国产精品无码久久综合| 奇米综合四色77777久久| 亚洲欧洲日产国码AⅤ| 国产操熟女性爱导航| 欧美极度另类XXⅩOO| 亚洲欧美偷拍内射白浆| 国产成人无码精品久久久免费| 男人进入女人下部图| 亚洲国产另类久久久精品小说| 国产 熟女 高潮 www| 女神被啪进深处娇喘在线观看| 亚洲精品有码在线观看| 国产成人精品久久| 人妻丰满熟妇AⅤ无码无码区免费| 亚洲综合久久精品无码色欲| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区 | 亚洲精品中文字幕乱码三区| 亚洲国产精品无码专区成人| 大波妺AV网站影院| 免费无码的AV片在线观看| 亚洲不卡AV不卡一区二区| 高清国产亚洲精品自在久久| 欧美性狂猛BBBBBBXXXXXX| 一本久道久久综合狠狠老| 韩国三级丰满少妇高潮| 色欲AV综合久久一区二区三区| 9612黄桃网站进入页面直播| 久久久精品人妻一区二区三区蜜桃 | 日本肥老妇色XXXXX日本老妇 | 亚洲成AV人片在线观看WWW| 丰满妇女强高潮ⅩXXX| 欧美最猛黑人XXXⅩ猛男欧| 永久免费精品精品永久-夜色| 好紧好爽太大了视频| 无码欧美毛片一区二区三在线视频| 成人无码区免费AⅤ片丝瓜视频| 国产在线内射婷婷| 天天躁日日躁AAAAXXXX| 成熟人妻换╳╳╳╳| 欧美激情一区二区三区在线| 中文天堂在线最新版在线WWW| 国产无套粉嫩白浆在线| 欧美性受XXXX黑人猛交免费看| 夜夜高潮夜夜爽高清完整版1| 激情综合亚洲色婷婷五月APP| 国产精品一线二线三线有什么区别| 护士HD老师FREE性ⅩⅩⅩⅩ| 午夜毛片精彩毛片| 中国BGMBGMBGM老妇网站| 99无人区码一码二码三码| 久久人人爽人人爽AV片| 亚洲精品偷拍无码不卡AV| 国产又爽又黄的激情精品视频| 特级XXXXX欧美| 都市 亚洲 自拍 小说 校园| 日韩精品极品视频在线观看免费| 被黑人伦流澡到高潮HNP动漫| 青青草视频 成人| YW尤物爆乳网站点击进入| 欧美性爱第一页色色色| AV无码AV高潮AV喷吹免费| 欧美激情一区二区三区成人| 99热这里有精品| 欧美日韩国产综合草草| 免费看高清毛片AAAAAAAA| 曰韩少妇内射免费播放| 精品人妻一区二区三区视频53一| 人妻精品久久一区二区av| JIZZJIZZ国产在线观看| 强被迫伦姧在线观看无码| 波多野AV一区二区无码| 人人爽人人片人人片AV| 亚洲色欲一区二区三区在线观看| 2023年最新绝伦推理片推荐| YY1111111少妇无码影院| 秋霞久久国产精品电影院| 被添高潮爱爱免费视频| 色偷一区国产精品| 国产成人综合在线视频| 小SAO货水好多真紧H无码视频| 好男人在线视频神马影视WWW| 亚洲国产婷婷六月丁香| 久久久亚洲综合久久久久87| 性欧美老妇人XXⅩ000| 色猫咪AV在线网址| 国产超碰人人模人人爽人人添| 无码人妻精品一区二区三区蜜桃 | 熟女CHACHACHA性少妇| 国产精品久久久久精品三级APP| 性高湖久久久久久久久| 黑人巨大超大VIDEOSGRA| 亚洲中文字幕无码久久2017| 免费一对一刺激互动聊天软件| TPU色母和PA6色母的性能| 色婷婷精品久久二区二区蜜臀av| 国产成人愉拍免费视频| 亚洲VA中文慕无码久久AV| 久久香蕉国产线看观看怡红院妓院 | 天美传媒MV在线看免费下载安装| 国产午夜片无码区在线观看爱情网| 亚洲欧美另类日本| 母与子之间的阴阳调和| 被黑人猛男强伦姧人妻完整版 | 国产精品99无码一区二区| 亚洲AV一宅男色影视| 乱码精品一卡2卡二卡三| YY8098影视理论无码专区| 婷婷蜜桃国产精品| 精品国产亚洲第一区二区三区| 一边摸一边吃奶一边做爽| 欧美肉体裸交做爰XXXⅩ性| 粉嫩虎白女流水白浆在线播放| 亚洲AV无码国产一区二区三区四| 久久午夜无码鲁丝片| 俺去俺来也在线WWW色官网| 无码免费一区二区三区免费播放 | 国产高潮国产高潮久久久| 亚洲欧美日韩在线观看一区二区三 | 欧美日韩人妻一区二区三区| 国产成年无码AⅤ片在线观看| 亚洲欧美综合一区二区三区| 欧美精品AⅤ一区二区三区| 国产999精品成人网站| 亚洲日本中文字幕乱码在线| 欧美最猛黑人xxxx黑人猛交| 国产精品久久一区二区三区蜜桃| 久久精品A一国产成人免费网站| AV天堂精品久久久久2| 无码成人H动漫在线网站| 久久青青草原精品国产APP| 成A人片亚洲日本久久| 亚洲AV无码专区亚洲AV紧身裤| 男人靠女人免费视频网站| 国产传媒中文字幕视频专区| 野花高清在线电影观看免费视频 | 免费无码又爽又刺激高潮的动态图| 大象一区一品精区搬运机器| 亚洲精品无码成人区久久| 人妻少妇精品中文字幕AV| 国内自拍视频一区二区三区| 97亚洲狠狠色综合久久| 亚洲2022国产成人精品无码区| 男人J桶进女人J无遮挡| 国产乱子伦农村叉叉叉| √BT天堂网WWW中文在线| 小东西才几天没做喷的到处都是| 男人又粗又黑又硬的东西| 国精产品一二二区视早餐有限|