美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產品分類

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

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

PA,FF通訊芯片

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

現場總線通信控制器 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

推薦產品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        久久国产精品-国产精品| 精品在线视频一区二区| 日韩视频免费观看高清完整版 | 男人的天堂亚洲一区| 日韩精品专区在线影院重磅| 精品产品国产在线不卡| 国产精品一区二区在线观看网站| 国产清纯白嫩初高生在线观看91 | 91福利精品视频| 久久精品午夜一区二区福利| 久久国产免费看| 亚洲成av人片在线观看无码| 成人免费在线视频观看| 久久久久国产精品厨房| 欧美欧美午夜aⅴ在线观看| 婷婷四月色综合| 免费不卡亚洲欧美| 国产精品区免费视频| 丁香婷婷久久久综合精品国产| 成人黄页毛片网站| 韩国v欧美v日本v亚洲v| 日韩高清欧美激情| 亚洲精品免费电影| 亚洲国产精品精华液ab| 精品国产一区二区三区久久影院 | 一区二区在线电影| 国产精品乱码妇女bbbb| 国产亚洲女人久久久久毛片| 精品国产免费视频| 久久只精品国产| 久久精品亚洲乱码伦伦中文 | 日韩国产高清在线| 99免费精品在线观看| 亚洲午夜久久久| 日韩av电影一区| 亚洲精品视频自拍| 天堂一区二区在线| 精品无人区卡一卡二卡三乱码免费卡| 国产综合一区二区| 另类综合日韩欧美亚洲| 国产精品1区二区.| 国产乱码一区| 91福利在线导航| 337p粉嫩大胆色噜噜噜噜亚洲| 久久新电视剧免费观看| 久久在线观看免费| 亚洲午夜精品久久久久久久久| 天堂午夜影视日韩欧美一区二区| 久久精品理论片| 国产91社区| 在线看国产一区| 久久精品免视看| 亚洲一区二区在线免费观看视频| 国内久久婷婷综合| 91精品国产91久久久久青草| 日韩av电影免费在线观看| 欧美成人精品二区三区99精品| 亚洲欧美视频在线观看视频| 国模冰冰炮一区二区| 日韩精彩视频| 久久九九久精品国产免费直播| 亚洲精品中文在线观看| 蜜芽一区二区三区| 国产欧美欧洲| ww久久中文字幕| 国产在线精品一区二区不卡了| 成人午夜影院在线观看| 欧美揉bbbbb揉bbbbb| 亚洲伦理在线精品| 97久久天天综合色天天综合色hd| 色哦色哦哦色天天综合| 亚洲三级电影网站| av电影一区二区| 欧美日韩第一区日日骚| 亚洲国产日日夜夜| 激情小说网站亚洲综合网| 精品av久久707| 国产大片一区二区| 欧美精品亚洲二区| 久久精品国产99国产| 日本一区二区高清视频| 国产精品水嫩水嫩| 成人av先锋影音| 久久伊人蜜桃av一区二区| 国产在线视频一区二区| 色综合中文字幕国产| 欧美男同性恋视频网站| 男男视频亚洲欧美| 色老汉av一区二区三区| 另类综合日韩欧美亚洲| 欧洲人成人精品| 韩国三级在线一区| 日韩一区二区在线看片| 国产福利一区二区| 欧美激情综合网| 欧美一区视久久| 全部av―极品视觉盛宴亚洲| 欧美丰满嫩嫩电影| 91精品国产99久久久久久红楼 | 亚洲精品国产品国语在线app| 国产一区二区无遮挡| 亚洲黄色性网站| 欧美一区二区久久久| 91在线观看美女| 亚洲一区二区三区爽爽爽爽爽 | 亚洲主播在线播放| 欧美少妇bbb| 精品久久久久久中文字幕动漫 | 久久久久久国产精品mv| 蜜桃av一区二区| 欧美精品一区二区三区在线| 久久精品国产综合精品| 免费观看在线色综合| 久久综合九色欧美综合狠狠 | 日韩欧美aaaaaa| 国产另类自拍| 免费观看日韩av| 亚洲男人天堂一区| 欧美日韩电影在线播放| 久久久久久久久久久久久久久久av| 日本va欧美va瓶| 国产麻豆视频一区二区| 亚洲永久免费视频| 国产精品久久久久久久裸模| 欧美视频中文字幕| 精品亚洲欧美日韩| av成人免费在线| 国内精品免费在线观看| 天天av天天翘天天综合网| 亚洲视频一区在线| 国产欧美一区二区三区在线看蜜臀 | 国产精品亚洲专一区二区三区| 国产精品麻豆视频| 国产女人aaa级久久久级| 色就色 综合激情| 一区二区三区电影| 伊人久久婷婷色综合98网| 精品免费视频123区| 97久久超碰精品国产| av中文字幕亚洲| 91亚洲精品久久久蜜桃网站| 国产二区国产一区在线观看| 玖玖九九国产精品| 经典三级视频一区| 久久精品二区亚洲w码| 蜜臀av性久久久久蜜臀aⅴ流畅 | 91免费国产视频网站| 成人激情小说网站| 波多野结衣亚洲一区| 成人av第一页| heyzo一本久久综合| 97se在线视频| 欧美日韩免费高清| 欧洲一区在线观看| 欧美大片一区二区| 18成人在线视频| 久久精品99久久久| 成人免费黄色大片| 国产欧美一区二区在线播放| 日本不卡一区二区三区视频| 色婷婷精品久久二区二区蜜臂av| 亚洲一区二区三区乱码| 777午夜精品免费视频| 亚洲国产精品传媒在线观看| 亚洲国产aⅴ天堂久久| 成人免费视频一区二区| 国产精品国模大尺度私拍| 日本精品一区二区三区不卡无字幕| 日本久久电影网| 亚洲国产成人私人影院tom| 亚洲免费观看高清| 成人app软件下载大全免费| 国产美女99p| 欧美一区二区三区影视| 亚洲免费电影在线| 97人人干人人| 91精品一区二区三区在线观看| 亚洲视频一二三区| 丁香一区二区三区| 正在播放精油久久| 中文字幕一区二区三区精华液| 国产精品一区一区三区| 欧美一区二区三区在线免费观看 | 麻豆国产精品官网| 在线视频欧美一区| 亚洲一区二区高清| 久久国产精品 国产精品| 久久亚洲精品小早川怜子| 国产一区二区三区四区五区入口| 精品久久久久久久久久久院品网| 中文字幕一区二区三区在线不卡| 成人一区二区三区视频在线观看| 在线一区二区视频| 毛片av一区二区三区| 色域天天综合网| 日韩不卡免费视频| 亚洲欧洲精品在线| 蜜臀a∨国产成人精品| 欧美综合色免费| 国产精品中文欧美|