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

4 次查看(过去 30 天)
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?

采纳的回答

Maitreyee Mordekar
Maitreyee Mordekar 2017-1-25
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Instrument Control Toolbox 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by