色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用C語言編寫并行端口2-Wire軟件

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-20 09:32 ? 次閱讀

本應用筆記討論了為有興趣為應用筆記AN2中所述的并行端口硬件開發3230-Wire軟件的客戶提供的C源代碼。源代碼可在達拉斯半導體的FTP站點上免費獲得,并且可以在任何使用Windows 95或Windows? 98操作系統的PC上運行。此外,FTP站點上還提供了一個簡單的Windows程序,該程序提供了基本的2-Wire通信軟件,可用于簡單評估和調試并行端口硬件。

本應用說明中介紹的軟件是免費的,并“按原樣”提供給我們的客戶使用。達拉斯半導體對軟件可能造成的任何損害不承擔任何責任。使用該軟件的風險由您自行承擔。

軟件要求

如介紹中所述,該程序必須在裝有Windows 95或Windows 98操作系統的PC上運行。此軟件直接訪問并行端口,基于 Windows NT 的操作系統需要驅動程序才能完成此任務。

此外,還有多種并行端口操作模式,其中一些與軟件不兼容。已成功使用的兩種模式是 EPP 和 ECP。大多數PC的并行端口模式都可以在BIOS設置中更改。

源代碼描述/用途

源代碼(見附錄A)是用ANSI C編寫的,因此它應該與任何C編譯器兼容。為了使它的使用盡可能簡單,所有代碼和聲明都在一個文件(2wire.c)中,因此沒有一個頭文件也必須包含在項目中才能使用資源。

要使用2-Wire源代碼:

將“2wire.c”文件放入項目目錄中。

在將訪問并行端口的程序頂部添加一個#include“2wire.c”聲明。

調用 ParPortSelect(1) 來選擇并行端口。該參數確定將使用的端口號(例如,如圖所示的 LPT1)。有效端口號為 1、2 和 3。大多數PC將使用LPT1。

使用表2所示的ChangeDelayCount(int i)命令校準3-Wire接口時序。

調用基本2-Wire函數或多字節2-Wire函數,如表1和表2所述。

并行端口時序在很大程度上取決于執行軟件的PC的速度,因此計算機之間的差異會使建立可靠的通信變得困難。為了解決此問題,在 SDA 和 SCL 信號之間插入可變長度延遲,以確保速度較快的計算機上的計時不超過最大額定接口速度(快速模式設備為 400kbits/秒)。延遲時間通過調用 ChangeDelayCount(int i) 函數來控制。此函數更改 PC 執行短延遲的次數(10 NOP + a

for( ; ; )

循環的執行時間)。i 的默認值為 1000,在 P3 600MHz 計算機上提供中等到慢速通信。這將導致大多數PC上的中等性能,但它應該可靠地工作。較低的i值將加快接口速度,但編程人員必須確保通信速度在2-Wire器件的規格范圍內。在速度較快的機器上,可能需要更大的值 i 才能建立通信,因此如果需要調試,則需要檢查這一點。

基本的2-Wire功能可用于大多數應用訪問2-Wire器件。發送啟動條件、寫入和讀取字節以及發送停止條件的機制已在這些例程中處理,僅將例程的調用時間和順序作為與設備通信的最后剩余障礙。要使用這些例程,請如上所述調整時序,并閱讀器件的數據手冊,以確定對訪問寄存器的調用順序。

多字節2-Wire功能可用于通過一個命令從器件讀取和寫入多達256字節的信息,但并非所有器件在通信期間都使用相同的數據序列。如果考慮使用這些函數,請檢查提供的源代碼,以確保它們與正在訪問的設備兼容。多字節寫入/讀取的主要優點是它限制了應用程序所需的調用次數,因為它使用單個命令傳輸多個字節,而不是發送多個命令來寫入/讀取單個字節。多字節寫入和讀取例程使用 SetSlaveAddress() 命令設置的設備地址,因此在使用多字節寫入和讀取命令之前必須調用 SetSlaveAddress()。

LED 使能和禁用功能允許將 AN3230 中顯示的 LED 用作狀態指示燈。頻閃設置和清除功能允許使用 LED 引腳觸發示波器。這些函數對于調試硬件和軟件問題非常有用。

表 1.基本2線功能

功能原型 功能說明 返回值
int 開始() 產生 2 線啟動條件。也可以調用以生成重新啟動條件。 1
int Stop() 產生 2 線停止條件 1
int WriteData(unsigned char ucData); 將參數寫入從屬服務器 如果從站確認,則為
1,如果從屬服務器不確認,則為 0
int ReadDataAck(unsigned char *ucData); 從從站讀取數據字節到 ucData 并確認 1
int ReadDataNack(unsigned char *ucData); 從從屬服務器讀取數據字節到 ucData 并且不確認 1
int ResetBus() 時鐘 SCL 9 次,然后生成停止條件 1

表 2.多字節2線功能

功能原型 功能說明 返回值
int SetSlaveAddress(unsigned char ucADDR) 設置多字節讀寫訪問的從地址 1
int WriteBytes(int iCount, unsigned char ucMemAddr, unsigned char ucData[256]) 將 iCount 字節寫入 SetSlaveAddress() 設置的設備地址,從 ucMemAddr 設置的內存地址開始。 如果從站確認,則為
1,如果從站不確認任何字節,則為 0。
Int ReadBytes(int iCount, unsigned char ucMemAddr, unsigned char ucData[256]) 從 ucMemAddr 設置的內存地址開始,在 SetSlaveAddress() 設置的設備地址處讀取 iCount 字節。 如果從屬在命令寫入期間確認,則為
1,如果從屬在命令寫入期間不確認,則為 0。

表 3.其他端口設置和調試功能

功能原型 功能說明 返回值
int ParPortSelect(int iLPT) 將并行端口訪問變量設置為指定的端口號。對于 LPT1,iLPT = 1。 1 表示成功更改
0 表示失敗
int ChangeDelayCount(int iCount) 這決定了在 SDA 和 SCL 通信期間與 DelayASMx10() 命令一起使用的“i”值。使用較高的 i 值調用此函數以使通信速度變慢。默認值為 1000,應提供中等到較慢的通信速度。這是 i 的安全值。大多數PC將能夠使用較低的i值來加快通信速度。 1
無效延遲ASMx10(int i) 每個 i 延遲 10 個時鐘周期。這稱為確定 SDA 和 SCL 計時的延遲。它不需要由軟件開發人員調用,它已經嵌入到啟動/停止/讀/寫命令中。
int EnableLED() 使能 AN3230 電路中的 LED 1
int 禁用指示燈() 禁用 AN3230 電路中的 LED 1
int SetStrobe() 將 AN3230 電路中的 LED 引腳設置為高電平,以便示波器觸發 1
int ClearStrobe() 將 AN3230 電路中的 LED 引腳設置為低電平,以便示波器觸發 1

基本2線功能示例

本節介紹如何將兩個字節寫入DS1086 DAC寄存器,然后使用基本的2-Wire功能讀回。DS1086的從地址為B0h,DAC寄存器為2字節,從存儲器地址08h開始。

要將 0180h 寫入地址 08h 和 09h,可以使用以下過程。

unsigned char fail = 0;

Start();                   // Generates Start Condition
fail |= !WriteData(0xB0);  // Writes the slave address
fail |= !WriteData(0x08);  // Writes the memory address of the DAC register
fail |= !WriteData(0x01);  // Writes the MSB of the DAC register
fail |= !WriteData(0x80);  // Writes the LSB of the DAC register
Stop();                    // Generates Stop Condition
if(fail == 1)
      Error("Device failed to acknowledge during write attempt");
若要讀取剛剛寫入 DAC 寄存器的字節,可以使用以下代碼。
unsigned char ucDataMSB=0;        // define variable for MSB data to be stored after the read
unsigned char ucDataLSB=0;        // define variable for LSB data to be stored after the read
unsigned char fail = 0;

Start();                          // Generate Start Condition
fail |= !WriteData(0xB0);         // Write the slave address, LSbit=0 to signify write byte
fail |= !WriteData(0x08);         // Write the memory address of the DAC register
Start();                          // Generates a re-start condition
WriteData(0xB1);                  // Writes the slave address, LSbit=1 to signify read byte
ReadDataAck(&ucDataMSB);          // Reads the MSB of DAC and sends acknowledgement to the slave
ReadDataNack(&ucDataLSB);         // Reads the LSB of DAC and does not acknowledge the slave
Stop();                           // Generates Stop Condition
if(fail ==1)
      Error("Device failed to acknowledge during read attempt");

視窗并行端口2線軟件

圖1所示的軟件是為了演示“2wire.c”軟件的基本功能而編寫的,也可用于調試AN3230硬件。

poYBAGPyzbiADMiaAAB3l43HILc219.gif?imgver=1


圖1.Windows并行端口到2-Wire軟件的示例。

該軟件可以與“并行端口選擇”部分中列出的 3 個并行端口中的任何一個進行通信。

2-Wire函數部分中的按鈕只需接受對話框中的參數,然后調用相應的“2wire.c”函數。Start 生成一個啟動條件,寫入數據將按鈕右側框中的參數寫入從站。兩個讀取按鈕都從從站讀取一個字節,但一個確認數據傳輸,另一個不確認數據傳輸。停止按鈕生成停止條件。寫入字節按鈕在LSbit設置為零時寫入2-Wire器件地址框中的值,讀取按鈕在LSbit設置為<>時寫入相同的值。這些按鈕允許寫入數據按鈕用于數據和存儲器地址,而不必在每次訪問器件時頻繁地將其中一個值更改為從地址。

單字節寫入將單個數據字節(Data)傳輸到2-Wire器件地址框中列出的從地址,位于Addr框中列出的存儲器地址處。

2字節從<>線器件地址盒中列出的從地址從“地址”從“地址”框中列出的存儲器地址讀取一個字節。對話框將在不確認的情況下讀取,以指示它只讀取一個字節。

雙字節寫入將兩個數據字節(數據MSB和數據LSB)傳輸到2-Wire器件地址框中列出的從地址,位于Addr框中列出的存儲器地址。

雙字節讀取從機讀取從機的兩個數據字節,從2-Wire器件地址框中列出的從地址開始,從“地址”框中列出的存儲器地址開始。對話框將確認第一個數據字節讀取,但不確認第二個數據字節讀取。

“查找地址”按鈕寫入2-Wire總線(00h-FEh)上的每個從地址,檢查確認地址以確定哪些地址具有從地址。響應確認的地址將列在狀態框中。該按鈕可用于確定AN3230硬件設置是否正確,以及能夠接收數據的從機是否連接到2-Wire總線。

Comm. Delay 按鈕調用 ChangeDelayCount() 函數,并將按鈕右側的整數作為參數。這可用于調整2-Wire接口的時序。

LED 按鈕啟用和禁用 AN3230 電路中顯示的指示 LED。選通使能使軟件在單字節和雙字節寫/讀功能之前將LED引腳設置為高電平,并在通信結束后將LED引腳設置為低電平。

“測試”按鈕執行環回測試,確保當SDA輸出設置為低電平時,SDA輸入讀數為低電平,同樣,對于高電平條件也是如此。它還測試LED引腳是否可以設置為低電平和高電平,暫停足夠長的時間,以便用戶看到LED閃爍然后熄滅。

上面列出的所有命令都在“狀態”窗口中提供用戶反饋。

結論

本應用筆記演示了使用AN2所示的并行端口2-Wire電路以及“3230wire.c”文件中提供的源代碼對2-Wire器件進行編程的簡便性。“2wire.c”中的例程執行信令功能,使程序員能夠專注于調整接口時序,并按照2-Wire器件數據手冊中概述的正確通信順序調用2-Wire例程。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 半導體
    +關注

    關注

    334

    文章

    27290

    瀏覽量

    218083
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136692
  • 編譯器
    +關注

    關注

    1

    文章

    1623

    瀏覽量

    49108
收藏 人收藏

    評論

    相關推薦

    介紹一個C語言編寫的硬件外設訪問庫

    今天要介紹的開源軟件c-periphery,一個 C 語言編寫的硬件外設訪問庫。
    的頭像 發表于 10-26 10:36 ?1233次閱讀
    介紹一個<b class='flag-5'>用</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編寫</b>的硬件外設訪問庫

    使用ADC3424EVM的2-wire模數轉換,ADC3424需要配置嗎?

    如果只使用ADC3424EVM的2-wire模數轉換 那么ADC3424需要配置嗎?還是無需配置,上電使用寄存器的默認配置就能使用?
    發表于 11-22 06:38

    DS1629 pdf datasheet (2-Wire D

    The DS1629 2-Wire Digital Thermometer and Real Time Clock integrates the critical functions of a
    發表于 12-08 15:52 ?18次下載

    MAX9621,pdf datasheet (2-wire Hall-effect sensors to low voltage microprocessors)

    includes the MAX9921. The MAX9621 provides a single-chip solution to interface two 2-wire Hall-effect sensors to low voltage microprocessors
    發表于 12-17 13:10 ?41次下載

    2-Wire Intercom circuits-雙路對講機

    2-Wire Intercom
    發表于 03-15 09:47 ?1176次閱讀
    <b class='flag-5'>2-Wire</b> Intercom circuits-雙路對講機

    Writing Parallel-Port 2-Wire S

    Abstract: Provides instruction and source code for writting parallel port 2-wire software for use
    發表于 04-28 10:37 ?1623次閱讀
    Writing Parallel-Port <b class='flag-5'>2-Wire</b> S

    2-Wire Communication Using Lab

    2-Wire Com
    發表于 05-08 09:08 ?1980次閱讀
    <b class='flag-5'>2-Wire</b> Communication Using Lab

    軟件實現1-Wire通信

    摘要:在沒有專用總線主機(如DS2480B、DS2490)的情況下,微處理器可以輕松地產生1-Wire時序信號。本應用筆記給出了一個采用‘C語言編寫、支持標準速率的1-
    發表于 05-08 12:02 ?2294次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>軟件</b>實現1-<b class='flag-5'>Wire</b>通信

    turbo c2.0_編寫C語言的好軟件

    turbo C作為新手編寫C語言的好軟件,簡單易懂、便于操作
    發表于 11-03 17:45 ?15次下載

    C語言編寫程序實現通過按鍵使LED燈周期閃爍

    C語言編寫程序實現通過按鍵使LED燈周期閃爍。
    發表于 03-30 16:54 ?10次下載

    C語言里如何編寫精確的微量延時

    眾所周知,相比于其他編程語言C語言編寫嵌入式編程中有著絕對的優勢。但它總也有缺點的:它的時序性比較差,不容易編寫精準的延時。而在
    發表于 05-23 16:33 ?1671次閱讀

    AT89S52單片機并行端口模擬I2C總線協議讀寫AT24C04的設計

    AT24C04是具有I2C總線接口的EEPROM.大小為512*8bit.單片機AT89S52本身不具有I2C總線結口,所以可編寫程序
    發表于 08-14 14:34 ?2718次閱讀

    AD5306/AD5316/AD5326:2.5V對5.5 V、400 A、2-Wire接口、Quad Voltion輸出8/10/12位數據Sheet

    AD5306/AD5316/AD5326:2.5V對5.5 V、400 A、2-Wire接口、Quad Voltion輸出8/10/12位數據Sheet
    發表于 04-14 10:28 ?0次下載
    AD5306/AD5316/AD5326:2.5V對5.5 V、400 A、<b class='flag-5'>2-Wire</b>接口、Quad Voltion輸出8/10/12位數據Sheet

    如何使用PC并口與2-Wire設備通信

    本篇應用筆記目的是演示如何使用PC并口構建一種快速、簡單和經濟的2-Wire(與I2C兼容)接口。本片應用筆記專門為接收或者訂購Dallas Semiconductor器件樣片且意識到他們需要與
    的頭像 發表于 06-09 17:08 ?1219次閱讀
    如何使用PC并口與<b class='flag-5'>2-Wire</b>設備通信

    C語言編寫并行端口2軟件

    本應用筆記討論了為有興趣為應用筆記AN2中所述的并行端口硬件開發3230-Wire軟件的客戶提供的C
    的頭像 發表于 06-13 17:17 ?564次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編寫</b><b class='flag-5'>并行</b><b class='flag-5'>端口</b><b class='flag-5'>2</b>線<b class='flag-5'>軟件</b>
    主站蜘蛛池模板: 久久久性色精品国产免费观看| 竹菊影视一区二区三区| 欧美三级黄色大片| 久久久视频2019午夜福利| 韩国黄色影院| 国产主播福利一区二区| 国产亚洲精品久久综合阿香蕉| 国产成人刺激视频在线观看| 成人国产亚洲欧美成人综合网 | 全彩黄漫火影忍者纲手无遮挡| 麻豆久久婷婷五月国产| 浪潮色诱AV久久久久久久| 久久天天躁狠狠躁夜夜呲| 久久精品亚洲AV高清网站性色| 久久成人永久免费播放| 久久成人伊人欧洲精品AV| 久色乳综合思思在线视频| 麻豆Av国产在线播放| 女人久久WWW免费人成看片| 欧美三级不卡在线观线看| 全部免费特黄特色大片看片| 色偷偷91综合久久噜噜| 午夜福利体验试看120秒| 亚洲 色 欧美 爱 视频 日韩| 亚洲精品无码不卡| 尹人久久大香找蕉综合影院| 538久久视频在线| www.日本 高清.com| 国产成人久久精品激情| 国产一区91| 久久视频这里只精品99热在线| 蜜柚视频高清在线| 日本xxxx19| 性欧美FREE少妇XXX| 一个人免费观看HD完整版 | 日日碰狠狠躁久久躁综合网| 十分钟免费看完整视频| 亚洲高清无在码在线电影| 御姐被吸奶| 把腿张开再深点好爽宝贝动态图| 国产高清砖码区|