[solved] Need help with RV901T as MESA 7i90: SPI isn't working

More
24 Mar 2024 21:53 #296653 by ago_tm
Hello,

I prepared the bitstream under Xilinx ISE 14.7 according to the changes described in github.com/q3k/chubby75/issues/85#issuecomment-1105762488. Here are the changes compared to basic hostmot2 for 7i90 from MESA site: github.com/golyakoff/hostmot2-rv901t-7i9...abf87a09ed5a3145c7d2.
I could flash the RV901 directly via JTAG from ISE iMPACT with the generic 72 GPIO bitstream.

But I could not connect to the device from Raspberry using SPI0:

Raspberry PI with Debian 12 from linuxcnc:
Linux pi-cnc 6.1.77-rt24-v8-ago #1 SMP PREEMPT_RT Sat Mar 16 18:05:52 MSK 2024 aarch64 GNU/Linux

In boot/broadcom/config.txt I enabled SPI0 with custom CE/CS pin:
dtparam=spi=on
dtoverlay=spi0-1cs,cs0_pin=22

When running the command
ago@pi-cnc:~$ sudo mesaflash --device 7i90 --spi --addr /dev/spidev0.0 --readhmid

Is see:
unable to set bpw32, fallback to bpw8
Unexpected cookie at 0100..0110:
00000000 00000000 00000000

On the logic analyzer I see the following error:
The initial (idle) state of the CLK line does not match the settings (see attachments)

I used the short enough SPI cable (~50-70mm)

Could you please advise?
Attachments:

Please Log in or Create an account to join the conversation.

More
24 Mar 2024 22:10 #296655 by cakeslob
you seem to know what your doing, but any reason you are using an alternate pin for the SPI cs?

Please Log in or Create an account to join the conversation.

More
24 Mar 2024 22:19 #296656 by ago_tm

you seem to know what your doing, but any reason you are using an alternate pin for the
SPI cs?


Hello, I just selected the closest in a row to avoid double-row pins. this GPIO is general purpose as I understand.

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 00:32 #296662 by cakeslob
yeah, i mean, it should work

but since its not working, possibly eliminate that as a variable first just to be sure?
The following user(s) said Thank You: cornholio, ago_tm

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 01:34 #296670 by cornholio
Old mate is right, it'll work fine using the standard SPI pinout on the RPi4 (don't try a Rpi5). I've played around with this board a bit using SPI, EPP and with modded SSerial code and used it as a smart serial device.

I found the best way to achieve 3.3v to 5v translation is to replace all the buffers on the non commoned lines with SN74CBT3245 and power the board with 4.2v. Tho on the "outside world side" the signal will need pulling up to 5v via a resistor.

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 04:25 #296681 by ago_tm
You are right, thanks!

I'll give a try to standard pinout of SPI0 today and as a second attempt SPI1 (I am not sure, but just see that SPI0 isn't a popular solution for some reasons).

Thanks, I will keep you in touch!

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 05:07 #296684 by cornholio
And those reasons would be ?
Based on what ideas ?

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 07:01 - 25 Mar 2024 07:03 #296688 by ago_tm

Old mate is right, it'll work fine using the standard SPI pinout on the RPi4 (don't try a Rpi5). I've played around with this board a bit using SPI, EPP and with modded SSerial code and used it as a smart serial device.

I found the best way to achieve 3.3v to 5v translation is to replace all the buffers on the non commoned lines with SN74CBT3245 and power the board with 4.2v. Tho on the "outside world side" the signal will need pulling up to 5v via a resistor.


I did the upgrade according to the IlyaKw suggestion forum.linuxcnc.org/27-driver-boards/4773...901t?start=30#272597 and then just downgraded the input voltage of RV901T to 3.5V - it was enough to flash the bitstream to FPGA with the Xilinx ISE. So I decided to still with that solution for a while, but I ordered the SN74CBT3245 already, thanks!

And those reasons would be ?
Based on what ideas ?


I am not sure about the reasons honestly, I spent about an hour in order to understand how to enable SPI or my rpi4. In STM32 with CubeMX it was not so big challenge). But I took into account two points:
1. I did not see solutions with GPIO7-11 of SPI0 in the internet success stories related to rv901t and rpi
2. I do not actually know whether SPI0 is already taken with some internal peripheral sensors or eeprom or somewhat else.

ls /dev | grep spi
gives: /dev/spidev0.0

lsmod
shows tons of the output - not sure how to interpret the results...
I know that I didn't use SPI0 explicitly but not sure that some internal sensor or board chip is not connected there for system needs.
Last edit: 25 Mar 2024 07:03 by ago_tm.

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 08:10 - 25 Mar 2024 08:13 #296690 by cornholio
There's no need to mess around with any spi defaults.

All that is required is to enable SPI is add this line to config.txt
dtparam=spi=on

I wouldn't worry too much looking into what drivers are loaded, if you have /dev/spidev0.0 all is good.

I've run various dev boards with modified versions of 7c81 & 7i90 firmware using the vanilla SPI interface and it all runs fine.

So if you enable the SPI interface without playing around with CS it will work fine. There's a few threads relating to using Mesa firmware on some Aliexpress dev boards, it works fine on a Mimas Spartan 6 dev board, just the dcm values need to be adjusted and to make sure the SPI comms is on the correct bank, but this comes during the compilation stage of the firmware.

The Linuxcnc-RIO project uses lattice fpgas and SPI on the RPi4 with no modifications required to the SPI pins.

Even the 7c81 doesn't require any messing about with.

As regarding your idea that something maybe connected to the SPI interface, that would be fine if the interface was enabled by default.

Once the default SPI interface is enabled it's all plug & play with the Mesa boards.Easier than ethernet as there's no IP addresses to set.

And honestly I've found these type on boards to end up being more expensive than a genuine Mesa product, but unfortunately the 7i90 is out of stock. At face value they appear cheaper, but as they are they are not entirely suitable, electrically, for a cnc machine. And if we're being honest a mess of dupont cables with eventually give you trouble.

This is an example of the way I've gone.
forum.linuxcnc.org/show-your-stuff/51142...tan-6-fpga-card-9d60

I actually modified the Linuxcnc driver & mesaflash utility to support the card with a custom ID I gave to the card, as well as the IP Port arrangement. Although it will work fine with 7c81 with only mods to the DCM setup, to allow for a 100MHz crystal.
Last edit: 25 Mar 2024 08:13 by cornholio.
The following user(s) said Thank You: ago_tm

Please Log in or Create an account to join the conversation.

More
25 Mar 2024 08:15 #296691 by cornholio
The following user(s) said Thank You: ago_tm

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.087 seconds
Powered by Kunena Forum