This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BOOSTXL-PGA460: Obstacle detection system with stm32 microcontroller and PGA460

Part Number: BOOSTXL-PGA460
Other Parts Discussed in Thread: ENERGIA, PGA460, PGA460-Q1

Dear TI,

I'm currently developing an obstacle detection prototype for an AGV. I have to use a ARM based microcontroller. If the prototype system is succesfull a dedicated PCB will be designed.

I want to use 4 BOOSTXL-PGA460 boards connected to the microcontroller on 4 separate uart channels. Can I use the code found in the software development guide and remove everything TCI, SPI and OWI related.in order for this to work I have to set the MEM_HOLD and MEM_CS HIGH and COM_PD and COM_SEL LOW? are there more settings needed to be able to use a two wire communication without a bus?

I plan on using the EVM package with the GUI for testing and find the needed settings and put those in the microcontroller program. Does this seem like a good plan, or did I overlook something?

kind regards,

Glenn

  • Hi Glenn,

    You are on the right track: If you only care about using the asynchronous UART mode (TXD and RXD), then you can remove all the TCI, SPI, and OWI related code. On the BOOSTXL-PGA460 specifically, COM_PD and COM_SEL must be low to use the UART communication mode. Because the external SRAM memory is not used by the Energia / UART code, it does not matter what state MEM_HOLD and MEM_CS are set to. However, for best practice, MEM_HOLD an MEM_CS should be set high to technically disable the external memory. This external memory is only used by the GUI in the Direct Data Burst Through USART Synchronous Mode.

    Please note that you can use a single UART bus/port to connect all four PGA460 devices. You'd need to update the UART_ADDR bits of all devices to be different prior to connecting them to the bus, but this would allow you to stack all four BOOSTXL-PGA460 motherboard . Note: do not use the USB boost circuit to power more than one BOOSTXL-PGA460 unless you are using an external 5V source capable of a >=500mA output. Using four separate UART channels is only beneficial if you need to read the data faster in parallel, rather than sequentially through a bus.

    Purchasing four BOOSTXL-PGA460 seems costly. If you want to save a little money, it may be more feasible to build four small form factor (SFF) modules. You can see a listing of the SFF modules in the Design files section at: www.ti.com/.../technicaldocuments. Do not use the ultra-SFF (USFF), as these only give access to the IO communication pin.
  • Hi Akeem,

    I'm struggling with the serial communication on the ARM micro controller. sending commands seems to go alright, but receiving anything back seems to be the problem. Is there by any chance a template for UART serial communication using a STM32 micro controller? I'm bound to the arm platform, but my knowledge is in AVR. making your library very readable but hard to convert. I've seen some forum users use the STM32 HAL libraries so I hope if not you someone else can help.

    kind regards,
    Glenn
  • Hi Glenn,

    We only offer the PGA460 Energia/C++ Library and Code Example ( www.ti.com/.../slac741 ); nothing specific to STM32 MCUs.

    A few things to consider and help debug the UART mode:

    1) At what logic level is your master operating (3.3 or 5V)? By the default, the PGA460 operates at 3.3V logic levels. If you need to use 5V, then a 100kOhm pull-up resistor to 3.3 or 5V must be placed on the TEST pin.
    ---------------------------------------------
    2) Can you provide a real serial example of your master's transmit sequence?
    Here are working examples from PGA460 datasheet section "7.5.1 UART and USART Communication Examples":
    •Example1 – Read register 0x1B, where PGA460-Q1 address is 0x0:
    Master to PGA460-Q1: 0x55, 0x09, 0x1B, 0xDB …
    PGA460-Q1 to master: … 0xDiag, 0xData, 0xChecksum
    •Example2 – Write register 0x40, data 0x80, where PGA460-Q1 address is 0x0:
    Master to PGA460-Q1: 0x55, 0x0A, 0x40, 0x80, 0x35
    PGA460-Q1 to master:No response, idle (0xFF)
    For additional async UART examples, or to compute the checksum of any command sequence, refer to the GUI's Interface Mode --> UART page's command selection. Select the desired command from the drop-down with the appropriate UART Addr (0 by default), then click Run Command to see the raw serial sequence with appended checksum printed in Hex format on the UART terminal. You do not need to have the EVM connected in to use this feature of the GUI.
    ---------------------------------------------
    3) Be sure your master MCU is using the PGA460 required UART frame structure:
    •8 data bits
    •1 start bit
    •2 stop bit
    •No parity bit
    •No flow control
    •Interfield wait time (only required when using 1 stop bit)
    Note: Most MCU's default to 1 stop bit, so ensure you have configured your master's UART port for 2 stop bits.
    ---------------------------------------------
    4) The PGA460 supports only supports a baud rate between 2.4k-115.2kBaud.
    ---------------------------------------------
    5) What is the value of VPWR? The PGA460 requires 6-28V to operate correctly. A 5V USB based supply will not be sufficient enough to power the PGA460.
    ---------------------------------------------
    6) The threshold must be written to at least once after start-up to clear the threshold CRC error that is always flagged high on initialization. The threshold CRC error must be cleared before the PGA460-Q1 is allowed to execute a Burst & Listen or Listen-Only command.