SPI communication in REXLANG
-
Hello, I'm Tobby, the user of REXYGEN, trying building a project using raspberry pi via SPI to communicate with asic. I've programmed according to the example "0503-02_MCP3008_ADC", but it showed that openspi failed. I'm wondering why.
Best Regards,
Tobby Lin -
Hi Tobby,
did you enable SPI on your Raspberry Pi? Try running this in the Linux terminal:sudo ls /dev/spi*
If you get "No such file or directory" response, SPI is not enabled. In such a case, you'll need to add the following to your /boot/config.txt:
dtparam=spi=on
Afterwards reboot your RPi and you should be up&running.
Kind regards,
Jaroslav -
Thanks ! It worked !
other problems:- How to assign a value to spi_bufTx[0] if I need SPI_MODE0 = 0 and MSBFIRST?
( spi_bufTx[0] = ___ ; //SPI data mode (0-3 mode, | 4=CS_HIGH | 8=LSB_FIRST | 16=3WIRE | 32=LOOP | 64=NO_CS | 128=READY) ) - Is there any time delay function in C file including in REXLANG?
- Can I decide the value of CS0 (GPIO8 of raspberry pi) by setting up CS0 =1 or 0 in C file?
Best Regards,
Tobby Lin - How to assign a value to spi_bufTx[0] if I need SPI_MODE0 = 0 and MSBFIRST?
-
Hi,
- In this case you just use
spi_bufTx[0] = 0;
If you wanted e.g. SPI_MODE = 2 and LSBFIRST, you would use
spi_bufTx[0] = 2 | 8;
In other words, the first 2 bits define mode, the 3rd bit defines CS behavior, the 4th defines LSB etc.
- CS signal is controlled by operating system. You can only change its behavior by the 3rd bit as mentioned above.
As for the delay function, I have turned it into a separate topic.
Best regards,
Jaroslav