How can I use writeRead command for SPI device with a uint12 precision?

1 visualizzazione (ultimi 30 giorni)
I have a ADC shield for arduino MEGA with 12bit resolution that communicate with arduino via SPI, when I use the writeRead command I can choose only between uint8 or uint16 precision, when I use uint8 I receive the correct data of the converted signal (but the precision of the ADC drop because it's 12-bit), instead if I use uint16 the data that I receive isn't correct. Do you now a method or a trick for use my ADC without lose resolution or get a wrong measure?

Risposta accettata

Maitreyee Mordekar
Maitreyee Mordekar il 25 Gen 2017
Hi Stefano,
Looks like you will have to read the data as uint16 and then mask the bits that are not desired.
You will have to check the specifications of the shield if the bits that are not of significance to you are in the most significant nibble or the least significant nibble.
If the non-desired 4 bits from the value read are in the most significant nibble, then just perform bitwise AND with the binary value '0000111111111111'. Else if the required data is in the lower nibble, you could right shift the data by 4 places using bitshift function.

Più risposte (0)

Categorie

Scopri di più su MATLAB Support Package for Arduino Hardware in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by