I have gotten P8_7 to bit bang a square wave.
#include <sys_gpio.h>
GPIO0.DIR01_bit.OE_bit15 = 0; // P8_7 bit15
GPIO0.OUT_DATA01_bit.DO_bit15 = 1;
gpio = 0x00090000; // BBAI-64 P8_12, P8_15. P8_16, for b19, b16
puseWidth = 500;
__R30 = gpio;
while(1)
{
__R30 = gpio; // Set HI
GPIO0.OUT_DATA01_bit.DO_bit15 = 1; // P8_7 HI
for(i = 0; i<pulseWidth; i++)
__delay_cycles(PW_CLK_CYCLES);
__R30 = 0;
GPIO0.OUT_DATA01_bit.DO_bit15 = 0; // P8_7 LO
for(i = 0; i<pulseWidth; i++)
__delay_cycles(PW_CLK_CYCLES);
}
I created a overlay “MotorControl.dts” and added P8_7 as follows
// SPDX-License-Identifier: GPL-2.0
/*
- Copyright (C) 2022 Jason Kridner, BeagleBoard.org Foundation
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/k3.h>
#include <dt-bindings/board/k3-j721e-bone-pins.h>
#include <dt-bindings/soc/ti,sci_pm_domain.h>
#include <dt-bindings/input/linux-event-codes.h>
&{/chosen} {
overlays {
MotorControl.kernel = TIMESTAMP;
};
};
&cape_header {
pinctrl-names = “default”;
pinctrl-0 = <
&P8_07_gpio_pin /* GPIO_bit15 /
&P8_12_pruout_pin / Direction bit PRU0 /
&P8_16_pruout_pin / Scope debug pin /
&P8_33_qep_pin / QEP2_B - EQEP1_B /
&P8_35_qep_pin / QEP2_A - EQEP1_A /
&P8_14_pruout_pin / Scope debug pin PRU1 */
>;
};
sys_gpio.h (29.2 KB)