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

產品分類

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

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

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

推薦產品

更多
FREE东北熟女HD自拍| 国产午夜精华无码网站| 无码国产精品一区二区免费模式| 久99久无码精品视频免费播放| 2021国产手机在线精品| 亚洲国产精品无码7777一线| 国产精品国产三级国AV| 亚洲AV无码成人精品区H| 萝卜视频高清免费视频日本| 把腿张开老子CAO烂你NP皇宫| 亚洲乱码日产精品BD| 丝袜一区二区三区在线播放 | 国产精品乱码一区二区三| 中文字幕V亚洲日本| 玩弄人妻熟妇性色AV少妇 | JIZZJIZZJIZZ中国| 性饥渴XXXXXⅩHD| 色综合天天综合狠狠爱_| 欧美xxxxx视频| 久久亚洲AV无码精品色午夜麻 | 久久国产精品日本波多野结衣 | 久久五月丁香综合中文亚洲| 肥熟老熟妇500部视频| 亚洲AV无码一区二区三区网址| 人妻夜夜爽天天爽三区麻豆AV网| 黑人入室粗暴人妻中出| 成人无码网WWW在线观看| 99久久综合狠狠综合久久| 真人作爱90分钟免费看视频| 亚洲综合久久精品无码色欲| 他的粗大把她捣出白沫| 三上悠亚AV影院在线看| 三个人换着躁B一PL| 日文中字乱码一二三区别在哪 | 中文字幕AV无码人妻| 亚洲AV无码秘 蜜桃牛牛| 日本乱人伦AⅤ精品潮喷| 人妻AV无码一区二区三区| 欧美日韩精品视频一区二区 | 欧亚成年男女深夜百度网盘| 久久亚洲精品中文字幕波多野结衣| 极品少妇自慰喷白浆av| 国产精品秘 入口A级熟女| 国产精品特级露脸AV毛片| 国产男女猛烈无遮挡免费网站 | 国产成人精品久久一区二区| 公司办公桌C了我好几次| 宝宝握住坐下~它会自己动| 车后车座的疯狂的做的视频| 粉嫩小泬无遮挡久久久久久| OM老熟妇DHXⅩXXX| 再深点灬舒服灬太大了网站| 1—36集电视剧免费观看36集| JIJZZIZZ老师出水喷水多| 中文字幕无码专区人妻系列| 92国产精品午夜福利免费| H系列高强无收缩灌浆料黄文| 成人国产精品一区二区网站| 99久久亚洲精品无码毛片| 残忍开嫩苞疼哭了视频| 国产精品亚洲АV久久| 国产精品无码无片在线观看| 精品人妻大屁股白浆无码| 免费中文无码AV动作片| 欧美成本人网站免费观看| 少妇高潮惨叫喷水正在播放| 无码免费一区二区三区| 性色AV一区二区三区天美传媒| 亚洲国产精品久久一线不卡| 一区二区三区久久含羞草| 草莓榴莲秋葵绿丝污免费版18 | 亚洲中文字幕久在线| PITBULL的妻子| 国产69精品久久久久久人妻精品 | 被多个强壮的黑人灌满精| 国产熟女一区二区三区五月婷| 国模精品一区二区三区| 免费看永久不收费下载软件 | 国产成人精品亚洲日本语言| 国产精品毛片一区内射| 免费AV片在线观看无需播放器 | 在线А√天堂中文官网| jlzzjlzz全部女高潮| 黑料不打烊吃瓜爆料| 欧美激情一区二区三区成人| 亚洲AV一二三又爽又色又色| 在线播放免费人成毛片乱码| 暴躁老阿姨CSGO技巧| 精品久久久久国产免费| 日日噜噜夜夜狠狠视频免费| 在线 | 一区二区三区| 成人免费无码不卡毛片| 久久免费看少妇高潮V片特黄| 铜铜铜铜铜铜铜铜铜好多水| 777成了乱人视频| 警察被两个混混脱裤玩J视频| 少妇无码一区二区三区| 亚洲日韩国产一区二区三区在线 | 99国产欧美精品久久久蜜芽| 国产AV无码专区亚洲AV琪琪| 国产日韩AV无码免费一区二区三| 欧美黑人极品猛少妇色XXXXⅩ| 丝袜灬啊灬快灬高潮了视频| 性欧美一区二区三区| 公愆憩止痒玉米地使用方法| 欧美胖老太牲交XXⅩXXX| 伊在人亚洲香蕉精品区麻豆| 好男人资源在线观看好| 天堂无码人妻精品一区二区三区| AV片在线观看网站免费| 邻居一晚让我高潮3次正常吗| 婷婷伊人久久大香线蕉AV| 被老头侵犯的人妻| 久久AV无码AⅤ高潮AV喷吹| 亚洲AV无码一区二区乱孑伦AS| 国产成人无码A区在线观看视频| 人妻少妇看A偷人无码| 真实国产乱子伦精品一区二区三区| 精品国产国偷自产在线观看| 亚洲ⅤA中文字幕无码毛片| 国产CHINESE男男GAY| 色综合天天综合网国产成人网| 99久久99这里只有免费费精品| 妺妺窝人体色WWW看人体| 中国大陆女RAPPER欢迎你| 精品国产乱码久久久久久蜜桃网站 | 少妇人妻中文字幕| 福利乱码卡一卡二卡新区| 日韩精品视频一区二区| 成在线人免费无码高潮喷水| 男女真人后进式猛烈动态图无打吗| 曰韩欧美群交P片内射| 蜜桃亚洲AV无码一区二区三区| 中文字幕丰满乱子无码视频| 美女扒开尿眼给男人桶爽网站免费 | 成人女人爽到高潮的Av在线| 欧美黑人疯狂性受XXXXX喷水| www.AV无码| 日本50岁丰满熟妇XXXX| 国产成人AV男人的天堂| 午夜免费无码福利视频网址| 精品国产国语对白久久免费| 亚洲阿V天堂无码Z2018| 久久午夜夜伦鲁鲁片免费无码| 50岁人妻丰满熟妇ΑV无码区| 蜜臀AV一区二区三区四区| 被群CAO的合不拢腿H纯肉视频 | 狠狠色噜噜狠狠狠狠色综合久AV| 亚洲熟妇无码爱V在线观看| 男女24式动态图| 东北往事之黑道风云20年 | 中文字幕韩国三级理论无码 | 久久AV无码专区亚洲AV桃花岛 | 8V蜜桃网最新电影| 欧美成人A天堂片在线观看| 闺蜜张开腿让我爽了一夜| 亚洲高清国产拍精品26U| 欧美人伦禁忌DVD| 国产7色在线 | 国产| 亚洲日韩精品欧美一区二区一| 欧美内射AAAAAAXXXXX| 大荫蒂又大又长又硬又紧又粗 | 极品YIN荡人妻合集H| JAPANESE丰满爆乳日本| 亚洲AV成人WWW永久无码精品| 妺妺窝人体色WWW精品777| 国产精品毛片一区二区三区| 中文字幕亚洲一区二区VA在线| 人妻少妇精品无码专区芭乐视网| 国产无遮挡裸体免费视频在线观看| 亚洲不乱码卡一卡二卡4卡5卡| 欧美日韩人妻精品一区二区在线 | 玩弄老太太的BBB| 美女与野兽在线观看| 国产熟妇人妻ⅩXXXX麻豆网址| 一下子挺进浓密的黑森林| 挺进邻居人妻雪白的身体| 免费无码不卡视频在线观看| 国产AV一二三无码影片| 67194熟妇人妻欧美日韩| 试看20分钟做受| 女人双腿搬开让男人桶| 国产清纯白嫩大学生正在播放| CHINESE呻吟VIDEOS| 野花免费高清完整在线观看| 午夜亚洲精品久久久久久| 日本中文字幕一区二区高清在线| 精品久久久久久无码专区| 波多野结AV衣东京热无码专区| 一本一本久久A久久综合精品蜜桃| 婷婷成人亚洲综合五月天| 琪琪电影网WWW888DVDC| 精品国产亚洲一区二区三区| 国产精华最好的产品人V中文 | 一面膜上边一面膜下边53分钟 | 亚洲产国偷v产偷v自拍浪潮AV| 糖心短视频VLOG柚子猫| 女士不遮阴小内搭| 男人边吃奶边挵进去呻吟动态图| 久久久久久人妻精品一区|