Simulink Raspberry Pi - SPI Master Transfer/Read Block Receiving Bits Shifting Problem
2 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
I am using a Raspberry Pi Model 3-B to get some sensor readings from an Arduino slave (follower) using the "Master Transfer" block. (sample time= 0.005 s)
I am trying to read two "int16" integers from the Arduino. So as an input I send 2 dummy int16 type values. (I don't need to use them in the Arduino side so they are irrelevant)
In my slave (follower) code I am writing 4 SPDR (SPI Register) commands in an interrupt routine. (Because an SPDR command writes 1 byte and I need 4 bytes for two "int16" types)
The problem is: Let's say my SPDR commands are writing "a", "b", "c" and "d" (any number between 0 and 256) steadily. So my first "int16" read should be a_b and second would be c_d.
But at every sample the readings shifts! What I mean is: first "int16" reading becomes b_c, second becomes d_a then in the next sample c_d for the first and a_b for the second... and so on.
I can't get a steady reading even without changing anything in the slave side. I make slave send the same values for to test the system and it does not work...
Any ideas what is causing this? I have tried changing MSB/LSB setting, SPI bus speed frequency and other things in target hardware resources. Btw I am using I2C with no problems at all, but I need to switch to SPI to make room for other I2C periphrals for Arduino. When Raspberry is the master in I2C lines, I can't read other I2C devices with Arduino.
Thanks in advance.
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Raspberry Pi Hardware 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!