สารบัญ:

เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C: 4 ขั้นตอน
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C: 4 ขั้นตอน

วีดีโอ: เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C: 4 ขั้นตอน

วีดีโอ: เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C: 4 ขั้นตอน
วีดีโอ: แนะนำการเชื่อมต่อแบบทู-ไวร์ Two-Wire Interface and I2C EP1 2024, พฤศจิกายน
Anonim
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C

คำแนะนำนี้ครอบคลุมถึงวิธีเชื่อมต่อ OOBoard สองตัวโดยใช้ I2C

ขั้นตอนที่ 1: การเชื่อมต่อกับบัสเครือข่าย I2C

การเชื่อมต่อกับบัสเครือข่าย I2C
การเชื่อมต่อกับบัสเครือข่าย I2C
การเชื่อมต่อกับบัสเครือข่าย I2C
การเชื่อมต่อกับบัสเครือข่าย I2C

มีบัส I2C สองบัสบน OOBoards บัสท้องถิ่น และบัสเครือข่าย

รหัส OOPIC เป็นภาษาที่แปลโดยพื้นฐานแล้ว กล่าวคือ "รหัส" ถูกเก็บไว้ใน EEPROM และไมโครโปรเซสเซอร์อ่าน/ตีความแบบเรียลไทม์ EEPROM ใช้บัส LOCAL I2C เพื่อสื่อสารกับไมโครคอนโทรลเลอร์ ถ้าคุณจะดูรถบัสท้องถิ่นนี้บนออสซิลโลสโคป คุณจะเห็นคนพูดพล่อยอย่างต่อเนื่อง บนบอร์ด OOBoards โลคัลบัสคือสิ่งที่เชื่อมต่อกับคอนเน็กเตอร์ I2C ซึ่งไม่จำเป็นต้องเป็นสิ่งที่เราต้องการ บัส NETWORK มักจะเป็นบัสที่ใช้ในการสื่อสารกับอุปกรณ์/oopics อื่นๆ บน OOBoards บัสนี้ไม่มีขั้วต่อ ในการเข้าถึงบัสนี้ คุณต้องบัดกรีสายไฟกับพิน 42 และ 37 ของไมโครคอนโทรลเลอร์ (ทำเครื่องหมาย N_SDA, N_SCL บนแผนผังตามลำดับ)

ขั้นตอนที่ 2: เพิ่มตัวต้านทานแบบดึงขึ้น

เมื่อทำการเชื่อมต่อ SDA และ SCL บนโปรเซสเซอร์แต่ละตัวแล้ว บอร์ดทั้งสองสามารถ

เชื่อมต่อเข้าด้วยกันโดยเชื่อมต่อ SDA กับ SDA, SCL กับ SCL และเชื่อมต่อสายกราวด์ทั่วไประหว่างบอร์ด คุณจะต้องมีตัวต้านทานแบบดึงขึ้นในแต่ละบรรทัด (ฉันใช้ 12k แต่นั่นเป็นเพียงสิ่งที่ฉันโกหก) โปรดทราบว่าคุณต้องการตัวต้านทานแบบดึงขึ้นเพียงตัวเดียวต่อบรรทัดสำหรับตัวต้านทานทั้งหมดสองตัว (ไม่ใช่ 4)

ขั้นตอนที่ 3: ตั้งโปรแกรม Slave

ตอนนี้มีการเชื่อมต่อทางกายภาพแล้ว คุณจะต้องตั้งโปรแกรมไมโครคอนโทรลเลอร์ทาส ฉันได้เพิ่มโค้ดด้านล่างซึ่งจะช่วยให้คุณเริ่มต้นได้

Dim SLAVE เป็นใหม่ oDDELinkDim LED เป็นใหม่ oDIO1Sub Main() &กำหนดที่อยู่ I2C ของเราเป็น 2 (โปรดทราบว่าสิ่งนี้ต้องตรงกับรีโมตและที่อยู่ที่เราตั้งไว้ในมาสเตอร์โค้ด) ooPIC. Node = 2 &apossetup LED LED. IOLine = 5 LED. Direction = cvOutput &aposnow เชื่อมโยงเอาต์พุตของอ็อบเจ็กต์ DDELink ของเรากับ &หลัง LED และเปิดมัน…ตอนนี้โดยอัตโนมัติ LED จะกะพริบ SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

ขั้นตอนที่ 4: โปรแกรม Master

สุดท้าย ตั้งโปรแกรมไมโครคอนโทรลเลอร์หลัก ให้ความสนใจกับบรรทัดที่กำหนดคุณสมบัติ. Location ของ DDELink: เว้นแต่จะตั้งค่าไว้อย่างถูกต้อง สิ่งนี้จะไม่ทำงาน!

Dim Master ใหม่ oDDELinkDim wire เหมือนใหม่ oWireDim hz1 ใหม่ oBitSub Main() &aposlink ตัวจับเวลา 1 วินาทีเป็นบิตที่เราสามารถเข้าถึงได้ &aposthis บิตตอนนี้จะสลับหนึ่งครั้งต่อวินาที wire. Input. Link (ooPIC. Hz1) wire. Output ลิงก์ (hz1) wire. Operate = cvTrue &aposthis ตั้งค่าที่อยู่ I2C ของไมโครคอนโทรลเลอร์ในพื้นที่ของเรา & หลังจากอินเทอร์เฟซ I2C ไม่ทำงานจนกว่าจะตั้งค่าที่อยู่เป็น ooPIC. Node = 1 และตอนนี้เราตั้งค่าวัตถุ DDELink อินพุตของเราคือบิต hz1 & aposnote ที่ วัตถุยังมีคุณสมบัติ. Output ที่ใช้ &aposเมื่อเราอยู่ในโหมดรับ Master. Input. Link(hz1) &aposthis คือที่อยู่ I2C ของไมโครคอนโทรลเลอร์ระยะไกล โปรดทราบว่า &aposin รหัสทาส เราบอกให้มันมีที่อยู่เป็น 2 Master. Node = 2 &aposugh…นี่คือส่วนเส็งเคร็ง นี่คือ "ที่อยู่" ของ DDELink &aposobject ในพื้นที่หน่วยความจำของทาส&aposs เพื่อที่จะหาตัวเลขนี้ &apos เราจำเป็นต้องเปิดและคอมไพล์โค้ดสเลฟ จากนั้นไปที่ View->Compiled Code &aposมองหาบางอย่างเช่น: &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * เป็นตัวเลขใดๆ และเป็นชื่อของวัตถุ DDELink ของคุณ &aposin รหัสทาสของคุณ บรรทัดด้านล่างควรอ่านดังนี้: &aposC0020:041;This.. Address &aposthe number to the right of the &apos:&apos คือที่อยู่ของวัตถุ DDELink Master. Location = 41 &aposthis บอกวัตถุที่เราจะส่ง ข้อมูล (เช่น คัดลอกข้อมูลจากคุณสมบัติ. Input ของเรา &หลังคุณสมบัติทาส.output (โปรดทราบว่า หากคุณตั้งค่านี้เพื่อรับ มันจะเป็นตรงกันข้าม) Master. Direction = cvSend &เปิดใหม่ แต่ยังไม่มีอะไรเกิดขึ้น… Master. Operate = cvTrue ทำ &aposcheck เพื่อดูว่าเรากำลังส่งข้อมูลอยู่หรือไม่ ถ้า Master. Transmitting = cvFalse จากนั้น &การส่งต่อค่านี้เป็น 1 จะทำให้มาสเตอร์ส่งค่าไปยังทาส &aposnote สิ่งนี้จะถูกรีเซ็ตโดยอัตโนมัติเป็น 0 เมื่อเสร็จสิ้นการส่ง Master. Sync = 1 สิ้นสุดถ้า LoopEnd Sub

แนะนำ: