hm2 BSPI documentation, examples?

More
09 Aug 2023 13:57 #277441 by PCW
I don't think any resistors are needed.
The only undriven pin would be the FPGA cards SPI data input
(SDI) line which is only driven when a transfer is taking place, but
that has a pullup on a 7I92/7I92T.

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

More
23 Aug 2023 01:14 #278739 by blazini36
So my hand got a little shaky when I was sticking a multi-meter probe in a step driver socket, pretty sure I shorted 24v+ to a GPIO (DIR) pin on the 7i92. Looks like there's a tiny hole in the bus switch IC. Is it likely that that's all I blew?

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

More
23 Aug 2023 03:26 #278743 by PCW
That's usually the case, but no guarantees...

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

More
20 Sep 2023 02:35 - 20 Sep 2023 03:31 #281203 by blazini36
I replaced both the bus switch ICs (probably only needed 1) with SN74CBT16211CDGGR.

Does it make sense that random pins don't seem to work? Like my inmux data output pins are strobing, but the 7i92 can't see the data input pin, but I can verify address and data with the scope. BSPI pins don't seem to be working at all, at least the clock and chip selects. The step pin I shorted was probably IO18 and I think the 2 bus switches are per connector but it's odd that the opposite connector seems to have random bad pins.

Does that make any sense? Sound like the FPGA is damaged?
Last edit: 20 Sep 2023 03:31 by blazini36.

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

More
20 Sep 2023 04:37 #281206 by PCW
Might be, 24V can do a lot of damage to 3.3/5V circuitry
as it may damage other  parts/pins by conducting through
damaged chip

You could do an I/O check on each GPIO pin to check
(or just see if all pins are high when first powered up)

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

More
20 Sep 2023 12:02 #281220 by blazini36

Might be, 24V can do a lot of damage to 3.3/5V circuitry
as it may damage other  parts/pins by conducting through
damaged chip

You could do an I/O check on each GPIO pin to check
(or just see if all pins are high when first powered up)
 

Is there an all GPIO firmware I can flash?

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

More
20 Sep 2023 15:05 #281224 by andypugh

Is there an all GPIO firmware I can flash?

If you turn off the other features (num_stepgen=0, num_bspis=0, etc) then all pins become GPIO. (At the FPGA, not necessarily usefully so at the screw terminals) 
 

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

More
20 Sep 2023 22:48 #281256 by blazini36
I stripped my hal file down to this:
#THIS IS A 7I92 GPIO TEST

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS num_dio=8
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=""


addf hm2_7i92.0.read          servo-thread
addf motion-command-handler   servo-thread
addf motion-controller        servo-thread
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1

I thought it worked like you said but with just that in my halfile, these are my pins:
[color=#000000]$ halcmd show pin | grep 7i92 [/color]
   36  float IN            -50  hm2_7i92.0.dpll.01.timer-us
   36  float IN            100  hm2_7i92.0.dpll.02.timer-us
   36  float IN            100  hm2_7i92.0.dpll.03.timer-us
   36  float IN            100  hm2_7i92.0.dpll.04.timer-us
   36  float IN             -1  hm2_7i92.0.dpll.base-freq-khz
   36  u32   OUT    0x0000002A  hm2_7i92.0.dpll.ddsize
   36  float OUT             0  hm2_7i92.0.dpll.phase-error-us
   36  u32   IN     0x00400000  hm2_7i92.0.dpll.plimit
   36  u32   OUT    0x00000001  hm2_7i92.0.dpll.prescale
   36  u32   IN     0x000007D0  hm2_7i92.0.dpll.time-const
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.000.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.000.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.000.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.001.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.001.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.001.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.002.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.002.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.002.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.003.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.003.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.003.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.004.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.004.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.004.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.005.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.005.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.005.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.006.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.006.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.006.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.007.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.007.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.007.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.008.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.008.in_not
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.009.in
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.009.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.010.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.010.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.011.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.011.in_not
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.012.in
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.012.in_not
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.013.in
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.013.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.014.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.014.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.015.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.015.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.016.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.016.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.017.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.017.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.018.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.018.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.019.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.019.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.020.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.020.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.021.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.021.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.022.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.022.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.023.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.023.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.024.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.024.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.025.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.025.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.026.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.026.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.027.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.027.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.028.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.028.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.029.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.029.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.029.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.030.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.030.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.030.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.031.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.031.in_not
   36  bit   IN          FALSE  hm2_7i92.0.gpio.031.out
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.032.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.032.in_not
   36  bit   OUT         FALSE  hm2_7i92.0.gpio.033.in
   36  bit   OUT          TRUE  hm2_7i92.0.gpio.033.in_not
   36  s32   OUT             0  hm2_7i92.0.inmux.00.enc0-count
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.enc0-reset
   36  s32   OUT             0  hm2_7i92.0.inmux.00.enc1-count
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.enc1-reset
   36  s32   OUT             0  hm2_7i92.0.inmux.00.enc2-count
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.enc2-reset
   36  s32   OUT             0  hm2_7i92.0.inmux.00.enc3-count
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.enc3-reset
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-00
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-00-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-00-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-01
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-01-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-01-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-02
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-02-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-02-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-03
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-03-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-03-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-04
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-04-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-04-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-05
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-05-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-05-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-06
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-06-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-06-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.input-07
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.input-07-not
   36  bit   IN          FALSE  hm2_7i92.0.inmux.00.input-07-slow
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-00
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-00-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-01
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-01-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-02
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-02-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-03
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-03-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-04
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-04-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-05
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-05-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-06
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-06-not
   36  bit   OUT          TRUE  hm2_7i92.0.inmux.00.raw-input-07
   36  bit   OUT         FALSE  hm2_7i92.0.inmux.00.raw-input-07-not
   36  bit   IN          FALSE  hm2_7i92.0.led.CR01
   36  bit   IN          FALSE  hm2_7i92.0.led.CR02
   36  bit   IN          FALSE  hm2_7i92.0.led.CR03
   36  bit   IN          FALSE  hm2_7i92.0.led.CR04
   36  bit   OUT         FALSE  hm2_7i92.0.packet-error
   36  bit   OUT         FALSE  hm2_7i92.0.packet-error-exceeded
   36  s32   OUT             0  hm2_7i92.0.packet-error-level
   36  u32   I/O    0x00000000  hm2_7i92.0.packet-error-total
   36  bit   IN          FALSE  hm2_7i92.0.pwmgen.00.enable
   36  float IN              0  hm2_7i92.0.pwmgen.00.value
   36  bit   IN          FALSE  hm2_7i92.0.pwmgen.01.enable
   36  float IN              0  hm2_7i92.0.pwmgen.01.value
   36  s32   OUT             0  hm2_7i92.0.read-request.time
   36  s32   OUT        169856  hm2_7i92.0.read.time
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.00.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.00.counts
   36  float OUT             0  hm2_7i92.0.stepgen.00.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.00.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.00.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.00.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.00.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.00.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.00.enable
   36  float IN              0  hm2_7i92.0.stepgen.00.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.00.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.00.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.00.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.00.velocity-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.01.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.01.counts
   36  float OUT             0  hm2_7i92.0.stepgen.01.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.01.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.01.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.01.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.01.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.01.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.01.enable
   36  float IN              0  hm2_7i92.0.stepgen.01.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.01.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.01.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.01.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.01.velocity-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.02.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.02.counts
   36  float OUT             0  hm2_7i92.0.stepgen.02.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.02.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.02.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.02.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.02.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.02.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.02.enable
   36  float IN              0  hm2_7i92.0.stepgen.02.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.02.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.02.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.02.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.02.velocity-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.03.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.03.counts
   36  float OUT             0  hm2_7i92.0.stepgen.03.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.03.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.03.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.03.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.03.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.03.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.03.enable
   36  float IN              0  hm2_7i92.0.stepgen.03.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.03.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.03.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.03.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.03.velocity-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.04.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.04.counts
   36  float OUT             0  hm2_7i92.0.stepgen.04.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.04.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.04.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.04.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.04.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.04.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.04.enable
   36  float IN              0  hm2_7i92.0.stepgen.04.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.04.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.04.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.04.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.04.velocity-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.05.control-type
   36  s32   OUT             0  hm2_7i92.0.stepgen.05.counts
   36  float OUT             0  hm2_7i92.0.stepgen.05.dbg_err_at_match
   36  float OUT             0  hm2_7i92.0.stepgen.05.dbg_ff_vel
   36  float OUT             0  hm2_7i92.0.stepgen.05.dbg_pos_minus_prev_cmd
   36  float OUT             0  hm2_7i92.0.stepgen.05.dbg_s_to_match
   36  s32   OUT             0  hm2_7i92.0.stepgen.05.dbg_step_rate
   36  float OUT             0  hm2_7i92.0.stepgen.05.dbg_vel_error
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.05.enable
   36  float IN              0  hm2_7i92.0.stepgen.05.position-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.05.position-fb
   36  bit   IN          FALSE  hm2_7i92.0.stepgen.05.position-reset
   36  float IN              0  hm2_7i92.0.stepgen.05.velocity-cmd
   36  float OUT             0  hm2_7i92.0.stepgen.05.velocity-fb
   36  s32   IN              1  hm2_7i92.0.stepgen.timer-number
   36  bit   I/O         FALSE  hm2_7i92.0.watchdog.has_bit
   36  s32   OUT             0  hm2_7i92.0.write.time

Halshow looks the same as my normal hal file as far as the 7i92 is concerned, the pins with a firmware module are not "full" gpio, no output and the inmux address lines are still strobing. Not sure if the config line is even necessary these days, looks like LinuxCNC is doing auto discovery. I just want straight GPIO so I can manually test inputs @ the headers.

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

More
20 Sep 2023 22:58 #281258 by andypugh
You would need to actively turn off the functions.
loadrt hm2_eth board_ip="10.10.10.10" config="num_stepgens=0, num_pwmgens=0"

You might be able to turn off the inmuxes, I am not sure.

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

More
21 Sep 2023 00:32 #281266 by blazini36

You would need to actively turn off the functions.
loadrt hm2_eth board_ip="10.10.10.10" config="num_stepgens=0, num_pwmgens=0"

You might be able to turn off the inmuxes, I am not sure.
 

I should have read that a bit better, setting the config lines to 0 did work.

I Looks like it's time to order a new 7i92t. Pretty sure I shorted pin2 of P1 which traces to the right side bus switch but I'm missing inputs on the left side of P1 which trace to the left bus switch. PCW, can you confirm that is the right chip? I tossed the old chips and I soldered these like 2 weeks ago, but I recall there being a variant with a different pinout, pretty sure it's the last "C" pin thae part number that does it.

Andy, I have a question...
My friend did some work on the BSPI component. He did something I thought was odd, wanna see if I understand how bspi works. My MCU has 4 12bit ADC channels. My thought was to stuff them into a single 48bit SPI package. Looks like it can support a 64bit single package...
r = hm2_bspi_setup_chan(name, 1, 1, 48, 4, 0, 1, 0, 1, 0, 0);

....but it looks like this function only supports 32bit so it could be split across 2
    r = hm2_tram_add_bspi_frame(name, 1, &_analog_tx[0], &_analog_rx[0]);
    r = hm2_tram_add_bspi_frame(name, 1, &_analog_tx[1], &_analog_rx[1]);

And then when dissecting that you would take bits 0-11, 12-23, of analog_rx[0] for the first 2 12bit readings, then the 3rd would be the upper 8bits of analog_rx[0] and the lower 4bits of analog_rx[1], then the 4th would be the next 12bits of analog_rx[1]. Or they could just be split into 24bits each.

I'm not a code gut so some of that might sound a little off but hopefully you understand the question. Looks like what he did, I suppose just to see if it works, in the MCU firmware he took the first 8bits of each adc value and lined them up then stuck the last 4bits of each together in the upper portion of the 48bit SPI package. So the component side would consist of 4 8bit values into analog_rx[0] then analog_rx[1] just goes to rtapi_print which doesn't seem to work on my system. I guess he figured that 2nd "hm2_tram_add_bspi_frame" probably wasn't going to work.

I would have tested it as is but my 7i92t is still broken so I figured I may as well ask about it.

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

Time to create page: 0.084 seconds
Powered by Kunena Forum