Separate SPI dataSPI (spidev) Communication with PLLSPI: Raspberry PI master and Arduino slaveIs it possible...

Origin of "boor"

std::declval vs crtp, cannot deduce method return type from incomplete type

With Ubuntu 18.04, how can I have a hot corner that locks the computer?

Increase speed altering column on large table to NON NULL

Are inverted question and exclamation mark supposed to be symmetrical to the "normal" counter-parts?

Has there been a multiethnic Star Trek character?

What is the color of artificial intelligence?

Can I utilise a baking stone to make crepes?

Is it expected that a reader will skip parts of what you write?

What aircraft was used as Air Force One for the flight between Southampton and Shannon?

How to “listen” to existing circuit

Longest bridge/tunnel that can be cycled over/through?

A map of non-pathological topology?

Non-aqueous eyes?

Is it possible to have 2 different but equal size real number sets that have the same mean and standard deviation?

Why is long-term living in Almost-Earth causing severe health problems?

Can all groups be thought of as the symmetries of a geometrical object?

How to hide rifle during medieval town entrance inspection?

How to publish items after pipeline is finished?

What does 思ってやっている mean?

First sign that you should look for another job?

How can I deal with uncomfortable silence from my partner?

What would be the way to say "just saying" in German? (Not the literal translation)

Can a human be transformed into a Mind Flayer?



Separate SPI data


SPI (spidev) Communication with PLLSPI: Raspberry PI master and Arduino slaveIs it possible to sample 6 microphones at 11 kHz each with a Raspberry Pi Zero?Raspberry Pi 2, Model B, separate SPI modules and clock of themRapsberry Pi Zero serial receiving too much data from packetJessie: How to deal with Python open of /dev/ttyACM0 not sending RST signal like it does with /dev/ttyUSB0Unexpected behavior of ws2801 when headlessData transfer of UART over USB too slowSerial communication using GPIO Pins for more than 2 raspberriespigpio library serial_wave confusion






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







2















I am using the AD/DA Hat from WaveShare https://www.waveshare.com/wiki/High-Precision_AD/DA_Board
I want to realize a continuous readout of the data.
It worked very well so far, but I am not so experienced with SPI (or serial communcation in gerneral)
My two questions are:



1) Is it possible that any data will be lost, if for example the AD/DA Hat writes faster than the refresh rate of my program. Or will all data be saved in a buffer and I can read them afterwards?



2) If I set the sample rate to very low (e.g. 5 Hz).. I will get data from SPI like [12, 125, 85, 0, 0, 0, 0, 0, 0, 0, 0, 15, 114, 43, 0, 0, ...] My readout of the ADC consits of 3 Bytes, so the rest is low. Because SPI has no start-, stop-bits I dont know how to extract the 3 bytes from the contiuous readout...
For the given example I could program a logic which extract the bytes afterwards But it is not very safe because the first or last bit of my actual readout could be zero as well.



Thanks for your help my friends










share|improve this question







New contributor



markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.


























    2















    I am using the AD/DA Hat from WaveShare https://www.waveshare.com/wiki/High-Precision_AD/DA_Board
    I want to realize a continuous readout of the data.
    It worked very well so far, but I am not so experienced with SPI (or serial communcation in gerneral)
    My two questions are:



    1) Is it possible that any data will be lost, if for example the AD/DA Hat writes faster than the refresh rate of my program. Or will all data be saved in a buffer and I can read them afterwards?



    2) If I set the sample rate to very low (e.g. 5 Hz).. I will get data from SPI like [12, 125, 85, 0, 0, 0, 0, 0, 0, 0, 0, 15, 114, 43, 0, 0, ...] My readout of the ADC consits of 3 Bytes, so the rest is low. Because SPI has no start-, stop-bits I dont know how to extract the 3 bytes from the contiuous readout...
    For the given example I could program a logic which extract the bytes afterwards But it is not very safe because the first or last bit of my actual readout could be zero as well.



    Thanks for your help my friends










    share|improve this question







    New contributor



    markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      2












      2








      2








      I am using the AD/DA Hat from WaveShare https://www.waveshare.com/wiki/High-Precision_AD/DA_Board
      I want to realize a continuous readout of the data.
      It worked very well so far, but I am not so experienced with SPI (or serial communcation in gerneral)
      My two questions are:



      1) Is it possible that any data will be lost, if for example the AD/DA Hat writes faster than the refresh rate of my program. Or will all data be saved in a buffer and I can read them afterwards?



      2) If I set the sample rate to very low (e.g. 5 Hz).. I will get data from SPI like [12, 125, 85, 0, 0, 0, 0, 0, 0, 0, 0, 15, 114, 43, 0, 0, ...] My readout of the ADC consits of 3 Bytes, so the rest is low. Because SPI has no start-, stop-bits I dont know how to extract the 3 bytes from the contiuous readout...
      For the given example I could program a logic which extract the bytes afterwards But it is not very safe because the first or last bit of my actual readout could be zero as well.



      Thanks for your help my friends










      share|improve this question







      New contributor



      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I am using the AD/DA Hat from WaveShare https://www.waveshare.com/wiki/High-Precision_AD/DA_Board
      I want to realize a continuous readout of the data.
      It worked very well so far, but I am not so experienced with SPI (or serial communcation in gerneral)
      My two questions are:



      1) Is it possible that any data will be lost, if for example the AD/DA Hat writes faster than the refresh rate of my program. Or will all data be saved in a buffer and I can read them afterwards?



      2) If I set the sample rate to very low (e.g. 5 Hz).. I will get data from SPI like [12, 125, 85, 0, 0, 0, 0, 0, 0, 0, 0, 15, 114, 43, 0, 0, ...] My readout of the ADC consits of 3 Bytes, so the rest is low. Because SPI has no start-, stop-bits I dont know how to extract the 3 bytes from the contiuous readout...
      For the given example I could program a logic which extract the bytes afterwards But it is not very safe because the first or last bit of my actual readout could be zero as well.



      Thanks for your help my friends







      serial spi






      share|improve this question







      New contributor



      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share|improve this question







      New contributor



      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share|improve this question




      share|improve this question






      New contributor



      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      asked 9 hours ago









      markus321markus321

      132




      132




      New contributor



      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




      New contributor




      markus321 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.
























          2 Answers
          2






          active

          oldest

          votes


















          4














          Any answer might only be of limited help to you as long as you have not understood how SPI actually works, so you should take a detailed look at this interface.



          Concerning question 1:
          SPI is a master-slave-system where any interaction has to be initiated by the master. The sensor itself is not able to write to the master, instead it is read by the master (raspberry pi). Therefore the sensor will not "write" more often than your loop "makes it write" by calling the corresponding SPI-read-function. The sensor might (or probably will) have done several measurements between two read-outs, but that's usually the case. It wouldn't be better if the sensor was slower than your program. If it turns out that this is actually the case you better make use of the data-ready-pin mentioned in RogerJones' answer.



          Question 2:
          Instead of using start-/stop-bits a transmission is triggered by selecting the slave (pulling its select pin low). You usually have to write the register address you want to read first, after that you can read a specific amount of bytes. As you know the address and length of the measurement data, you don't need to parse or "extract" any bytes. You simply select the bytes you desire and will get those back right away.






          share|improve this answer

































            2














            In addition to the other answer about the SPI protocol I notice that the product page you linked to shows that, as well as the SPI CS pin on GPIO 15 (BCM22), the ADS1256 ADC has a "Data Ready" pin connected to GPIO 11 (BCM17). You could monitor this and only fetch a new sample when the data is available rather than just reading the data back constantly --- you might be getting the same data repeated if there's no new conversion between your read attempts. By using the "Data Ready" pin in this way you'd get the fastest data rate from the board (assuming you can read the data out fast enough) without missing or replicating data points. How you'd do this would depend on the programming language you've used but using an interrupt on pin 11 would appear to be a good start.



            Looking at the provided code and datasheet it looks like you can also change the ADC sample rate so if you are having problems keeping up you can slow the chip down, the slowest sample frequency is about 50Hz giving your code 20ms to read the data.






            share|improve this answer
























              Your Answer






              StackExchange.ifUsing("editor", function () {
              return StackExchange.using("schematics", function () {
              StackExchange.schematics.init();
              });
              }, "cicuitlab");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "447"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });






              markus321 is a new contributor. Be nice, and check out our Code of Conduct.










              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fraspberrypi.stackexchange.com%2fquestions%2f99353%2fseparate-spi-data%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              4














              Any answer might only be of limited help to you as long as you have not understood how SPI actually works, so you should take a detailed look at this interface.



              Concerning question 1:
              SPI is a master-slave-system where any interaction has to be initiated by the master. The sensor itself is not able to write to the master, instead it is read by the master (raspberry pi). Therefore the sensor will not "write" more often than your loop "makes it write" by calling the corresponding SPI-read-function. The sensor might (or probably will) have done several measurements between two read-outs, but that's usually the case. It wouldn't be better if the sensor was slower than your program. If it turns out that this is actually the case you better make use of the data-ready-pin mentioned in RogerJones' answer.



              Question 2:
              Instead of using start-/stop-bits a transmission is triggered by selecting the slave (pulling its select pin low). You usually have to write the register address you want to read first, after that you can read a specific amount of bytes. As you know the address and length of the measurement data, you don't need to parse or "extract" any bytes. You simply select the bytes you desire and will get those back right away.






              share|improve this answer






























                4














                Any answer might only be of limited help to you as long as you have not understood how SPI actually works, so you should take a detailed look at this interface.



                Concerning question 1:
                SPI is a master-slave-system where any interaction has to be initiated by the master. The sensor itself is not able to write to the master, instead it is read by the master (raspberry pi). Therefore the sensor will not "write" more often than your loop "makes it write" by calling the corresponding SPI-read-function. The sensor might (or probably will) have done several measurements between two read-outs, but that's usually the case. It wouldn't be better if the sensor was slower than your program. If it turns out that this is actually the case you better make use of the data-ready-pin mentioned in RogerJones' answer.



                Question 2:
                Instead of using start-/stop-bits a transmission is triggered by selecting the slave (pulling its select pin low). You usually have to write the register address you want to read first, after that you can read a specific amount of bytes. As you know the address and length of the measurement data, you don't need to parse or "extract" any bytes. You simply select the bytes you desire and will get those back right away.






                share|improve this answer




























                  4












                  4








                  4







                  Any answer might only be of limited help to you as long as you have not understood how SPI actually works, so you should take a detailed look at this interface.



                  Concerning question 1:
                  SPI is a master-slave-system where any interaction has to be initiated by the master. The sensor itself is not able to write to the master, instead it is read by the master (raspberry pi). Therefore the sensor will not "write" more often than your loop "makes it write" by calling the corresponding SPI-read-function. The sensor might (or probably will) have done several measurements between two read-outs, but that's usually the case. It wouldn't be better if the sensor was slower than your program. If it turns out that this is actually the case you better make use of the data-ready-pin mentioned in RogerJones' answer.



                  Question 2:
                  Instead of using start-/stop-bits a transmission is triggered by selecting the slave (pulling its select pin low). You usually have to write the register address you want to read first, after that you can read a specific amount of bytes. As you know the address and length of the measurement data, you don't need to parse or "extract" any bytes. You simply select the bytes you desire and will get those back right away.






                  share|improve this answer















                  Any answer might only be of limited help to you as long as you have not understood how SPI actually works, so you should take a detailed look at this interface.



                  Concerning question 1:
                  SPI is a master-slave-system where any interaction has to be initiated by the master. The sensor itself is not able to write to the master, instead it is read by the master (raspberry pi). Therefore the sensor will not "write" more often than your loop "makes it write" by calling the corresponding SPI-read-function. The sensor might (or probably will) have done several measurements between two read-outs, but that's usually the case. It wouldn't be better if the sensor was slower than your program. If it turns out that this is actually the case you better make use of the data-ready-pin mentioned in RogerJones' answer.



                  Question 2:
                  Instead of using start-/stop-bits a transmission is triggered by selecting the slave (pulling its select pin low). You usually have to write the register address you want to read first, after that you can read a specific amount of bytes. As you know the address and length of the measurement data, you don't need to parse or "extract" any bytes. You simply select the bytes you desire and will get those back right away.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 7 hours ago

























                  answered 9 hours ago









                  Sim SonSim Son

                  34617




                  34617

























                      2














                      In addition to the other answer about the SPI protocol I notice that the product page you linked to shows that, as well as the SPI CS pin on GPIO 15 (BCM22), the ADS1256 ADC has a "Data Ready" pin connected to GPIO 11 (BCM17). You could monitor this and only fetch a new sample when the data is available rather than just reading the data back constantly --- you might be getting the same data repeated if there's no new conversion between your read attempts. By using the "Data Ready" pin in this way you'd get the fastest data rate from the board (assuming you can read the data out fast enough) without missing or replicating data points. How you'd do this would depend on the programming language you've used but using an interrupt on pin 11 would appear to be a good start.



                      Looking at the provided code and datasheet it looks like you can also change the ADC sample rate so if you are having problems keeping up you can slow the chip down, the slowest sample frequency is about 50Hz giving your code 20ms to read the data.






                      share|improve this answer




























                        2














                        In addition to the other answer about the SPI protocol I notice that the product page you linked to shows that, as well as the SPI CS pin on GPIO 15 (BCM22), the ADS1256 ADC has a "Data Ready" pin connected to GPIO 11 (BCM17). You could monitor this and only fetch a new sample when the data is available rather than just reading the data back constantly --- you might be getting the same data repeated if there's no new conversion between your read attempts. By using the "Data Ready" pin in this way you'd get the fastest data rate from the board (assuming you can read the data out fast enough) without missing or replicating data points. How you'd do this would depend on the programming language you've used but using an interrupt on pin 11 would appear to be a good start.



                        Looking at the provided code and datasheet it looks like you can also change the ADC sample rate so if you are having problems keeping up you can slow the chip down, the slowest sample frequency is about 50Hz giving your code 20ms to read the data.






                        share|improve this answer


























                          2












                          2








                          2







                          In addition to the other answer about the SPI protocol I notice that the product page you linked to shows that, as well as the SPI CS pin on GPIO 15 (BCM22), the ADS1256 ADC has a "Data Ready" pin connected to GPIO 11 (BCM17). You could monitor this and only fetch a new sample when the data is available rather than just reading the data back constantly --- you might be getting the same data repeated if there's no new conversion between your read attempts. By using the "Data Ready" pin in this way you'd get the fastest data rate from the board (assuming you can read the data out fast enough) without missing or replicating data points. How you'd do this would depend on the programming language you've used but using an interrupt on pin 11 would appear to be a good start.



                          Looking at the provided code and datasheet it looks like you can also change the ADC sample rate so if you are having problems keeping up you can slow the chip down, the slowest sample frequency is about 50Hz giving your code 20ms to read the data.






                          share|improve this answer













                          In addition to the other answer about the SPI protocol I notice that the product page you linked to shows that, as well as the SPI CS pin on GPIO 15 (BCM22), the ADS1256 ADC has a "Data Ready" pin connected to GPIO 11 (BCM17). You could monitor this and only fetch a new sample when the data is available rather than just reading the data back constantly --- you might be getting the same data repeated if there's no new conversion between your read attempts. By using the "Data Ready" pin in this way you'd get the fastest data rate from the board (assuming you can read the data out fast enough) without missing or replicating data points. How you'd do this would depend on the programming language you've used but using an interrupt on pin 11 would appear to be a good start.



                          Looking at the provided code and datasheet it looks like you can also change the ADC sample rate so if you are having problems keeping up you can slow the chip down, the slowest sample frequency is about 50Hz giving your code 20ms to read the data.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 7 hours ago









                          Roger JonesRoger Jones

                          848114




                          848114






















                              markus321 is a new contributor. Be nice, and check out our Code of Conduct.










                              draft saved

                              draft discarded


















                              markus321 is a new contributor. Be nice, and check out our Code of Conduct.













                              markus321 is a new contributor. Be nice, and check out our Code of Conduct.












                              markus321 is a new contributor. Be nice, and check out our Code of Conduct.
















                              Thanks for contributing an answer to Raspberry Pi Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fraspberrypi.stackexchange.com%2fquestions%2f99353%2fseparate-spi-data%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

                              Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

                              Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...