I'm using OpenOCD on a ARM9 with the sysfsgpio bitbang interface, and try to debug a Cortex M3 stm32f103 microcontroller. The OS used is an embedded debian.
Unfortunately after getting the device id I keep getting a wrong ACK from the target (Warning, invalid ACK 0x4 in jtag DP transaction).
Do you have any insights on what could be the cause of the problem? I plotted every signals on an oscilloscope and didn't see anything wrong, I also checked the target device with an olimex jtag-key and it is working.
There was a wrong contact between the microcontroller and the JTAG connector on the TDI line, however the target device was sending its ID since it doesn't require a specific instruction...
Related
I built 2 baremetal development boards, both using the STM32F030K6T6. The MCU on one board can be programmed as indicated in the datasheet using the boot pin selection and via USART pins PA14 and PA15. The second does not respond to flashing command and instead keeps sending the same message ST20033000022056000063227OV on the USART TX pin every 5 seconds with a 9600 baud rate.
I was not able to find any references related to this in the datasheet or elsewhere. I could just ditch the board but I'd like to understand what is it that's happening. It seems like the MCU is in some sort of a failure mode. What does the message mean?
I tried flashing using the stm32flash script available in the STM32 library for Arduino. The signal's baud rate was determined using a scope. The messages were then captured with:
cu -l /dev/ttyUSB0 -s 9600
Both MCUs came from the same batch and the development boards have the same aditional components (2 decoupling capacitors, a boot selector jumper and a reset button).
I am building a board based on the STM32F303RET6.
The Processor Datasheet, page 17/section 3.5, mentions programming can be done "using USART1 (PA9/PA10), USART2 (PA2/PA3) or USB (PA11/PA12) through DFU (device firmware upgrade)"
I am using a NUCLEO board with this processor.
I have connected the Vdd, Gnd, D+ and D- pins of USB to a NUCLEO board and disabled the power from the add-on programmer board.
However whenever I reboot it with BOOT0 HIGH the USB never enumerates any device.
I am connecting the pins directly to the USB plug without any external resistor. The datasheet seems to suggest these are not needed.
To make things a bit trickier, this processor has the additional particularity of not having a BOOT1 pin; it is a software bit.
My question is, does the processor actually support DFU by using the built in bootloader?
If so, how should one go about starting it and programming via USB?
Thank you very much,
Pedro.
PS: ST has actually got conflicting information about support for USB programming on this processor. While the Datasheet says it's supported, Application Note AN2606, page 81 (section 19) only mentions support for programming via USART1, USART 2 and I2C. It references the USARTs but it's unclear how they can be used.
I have connected the Vdd, Gnd, D+ and D- pins of USB to a NUCLEO board
and disabled the power from the add-on programmer board.
Check the actual voltage and current on Vdd. The host might limit the current, or shut the port down when the consumption exceeds 100mA before enumeration. Try it with an external power supply.
I am connecting the pins directly to the USB plug without any external
resistor.
You need an 1.5k pullup on D+ (full speed) or D- (low speed). This is from the STM32F3 Discovery schematics (that's an OTG socket, ignore the ID line for regular 4-wire ports)
When there is no pullup, the host can't detect when the device is plugged in, and therefore won't enumerate it.
ST has actually got conflicting information about support for USB programming on this processor. While the Datasheet says it's supported, Application Note AN2606, page 81 (section 19) only mentions support for programming via USART1, USART 2 and I2C.
There is no conflicting information there. Section 19 on page 81 refers to some other controllers.
The capabilities of your STM32F303RET6 are listed in table 36, section 18.1 on page 77. (As I've already pointed it out.) See also table 3 on page 23, line STM32F302xD(E)/303xD(E).
we are doing a project for receiving data from a device using a RS232 to ethernet converter (gridconnect net 232+) onto to a Atmel board. When we connect the converter to the PC, we are getting the output but not when connected to the microcontroller board. We need to know if there has to be some network confirguration to be done on the converter in order to receive it on the microcontroller.
Thanks !
I haven't worked with that board or device, but with any RS-232 communication channel you should check that all RS-232 parameters are set up correctly on both sides. Databits, stopbits, parity settings, etc. Even one setting being off will completely stop RS-232 communications.
Once that is done, I'd hook up a terminal emulator of your choice to simulate the microcontroller side and make sure that you're getting the right traffic from the Ethernet side. You might get lucky at that point and everything might start working. ;)
I bought a Lilypad Arduino, for which an FTDI socket is required to connect to my PC. The first socket I tried on didn't power up the Arduino, because of some hardware damage. Thus, I got another socket, but with 4 female pins (Vcc, Gnd, TX, RX), unlike the previous one that had 6 male pins. Let's call the second socket as X. With X, the Lilypad is getting powered up through USB cable. Then, when I tried to upload my source code the first time, it started working.
But when I uploaded it some time later, an error called 'programmer is not responding' occurs always, which I'm unable to resolve.
What should I do?
To program an Arduino (and Arduino-compatibles), you need an FTDI adapter that has an RTS pin, as well as the Vcc, Gnd, TX, and RX pins.
The RTS pin connected to the reset circuit on the Arduino, putting the bootloader into programming mode for a few seconds.
You may be able to get it to work by resetting the Lilypad with it's reset button, then upload your sketch within a few seconds after the reset. Alternatively, or for the least hassle, get an FTDI adapter with all the needed signals. I recommend Adafruit's FTDI Friend.
Is there a sample i2c master code that supports rtc s35390a hardware clock? I am currently working on an SOC that needs to support s35390a from Seiko. But currently, i am getting an error rtc-s35390a 0-0030: hctosys: unable to read the hardware clock. I cannot read/write data properly. I am implementing combined form of transmission.
Use oscilloscope to check if I2C SCL/SDA show some thing
If you can get the first address correct waveform, You will easy to get the register value
This might not be a rtc chip problem.