Skip to content

tipsI2C

erwindenboer edited this page Sep 30, 2021 · 3 revisions

Tips bij opdracht 3.2.4 van EMS20

Bij opdracht 3.2.4 ga je de TMP006 temperatuursensor op je CC3220S LaunchPad uitlezen via de I2C-bus. Je maakt daarbij gebruik van de I2C-driver uit de SimpleLink SDK.

Als je deze opdracht lastig vind, dan krijg je hier enkele tips!

  • Lees de datasheet van de sensor [https://media.digikey.com/pdf/Data Sheets/Texas Instruments PDFs/TMP006(B).pdf](https://media.digikey.com/pdf/Data Sheets/Texas Instruments PDFs/TMP006(B).pdf) nog eens goed door! Vooral paragraaf 8.3.8.2 waarin uitgelegd wordt hoe je registers (die zich in de sensor bevinden) kunt lezen via I2C. Want je wil om te beginnen het manifacturer register (zie paragraaf 8.5) uitlezen (daar staat namelijk TI in).

  • Om I2C aan de praat te krijgen kun je https://dev.ti.com/tirex/explore/content/simplelink_cc32xx_sdk_5_20_00_06/docs/drivers/doxygen/html/_i2_c_8h.html nog eens goed bestuderen. Kijk vooral naar: "Opening the I2C Driver" en "Writing two bytes and reading four bytes in a single transaction". In dat laatste stukje zit een fout. Je moet i2cTransaction->status vervangen door i2cTransaction.status. Natuurlijk moet jij het slaveAddress nog aanpassen en andere data (en een andere hoeveelheid bytes) versturen, ook moet je een andere hoeveelheid bytes ontvangen. Maar dat staat uitgelegd in de datasheet van de sensor.

  • Als je alle code hebt nagekeken. Deze komt overeen met de code besproken in het voorgenoemde punt. Verder zie je geen enkel punt waar de code nog fout kan gaan. Dan kun je proberen het bordje te resetten. Koppel het bordje los van je computer en sluit hem opnieuw aan. Dit reset de I2C-bus. Het probleem zit dan wellicht niet in je code, maar in de hardware van de I2C-bus die is vastgelopen. Het resetten zorgt dat de I2C-bus weer vrijkomt.

Clone this wiki locally