Ficus board

fredbox
Tue Sep 08, 2015 4:45 pm
Has anyone tried one of the Ficus boards? They are fairly inexpensive and have full schematics available. There are two models, one with a STM32F103VCT6 for $13USD and the other with STM32F107VCT6 for $17USD.

STM32F103VCT6

STM32F107VCT6


madias
Tue Sep 08, 2015 5:54 pm
They looks like they have the SRAM module connector, nice! See viewtopic.php?f=3&t=553
Total drawback: US $17,31 shipping to Austria so nothing for me.

Rick Kimball
Tue Sep 08, 2015 9:12 pm
Seems pretty decent, did you order one?

RogerClark
Tue Sep 08, 2015 9:15 pm
$20 shipping for me as well :-(

RogerClark
Tue Sep 08, 2015 9:45 pm
Looks like we’d need a different board variant and modified bootloader

It has USB hardware a bit like the Maple mini, but on pin PE11

It seems to have a Mini usb connector on the schematic, but strangley it has 9 connections, which seems far more than normal, but most are GND

I’m sure it could be made to work, but $20 just for shipping is too rich for me on a single board.


fredbox
Wed Oct 14, 2015 8:28 pm
I bought one of these and finally had some time to perform some quick tests.

It comes with a PL2303 USB/Serial adapter that doesn’t work under Windows 8, but is ok using Linux.
I connected a CP2102 adapter and tried to flash the generic PC13 bootloader using the ST demonstrator tool. It did not find the board until I set the baud rate to 115200. With an led on PC13, it flashed a few times on reboot but did not enumerate. I didn’t expect it to work as the USB port is closer to that of the maple mini. I’ll try to recompile the bootloader with the right pins and see if I can get one working.

Uploading programs using the serial port works ok. I checked serial port 1 communications, four user leds, three switches, and the RTC. All were detected correctly.


fredbox
Thu Oct 15, 2015 11:10 pm
I created the symbolic links to arm-none-eabi that were buried in the .arduino15//packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/ folder and managed to recompile the existing bootloaders using make_all.bat. The compile was successful and I checked the md5 sums on a couple of the bin files to make sure that they matched.

I modified config.h to add my board:#elif defined TARGET_FICUS

#define HAS_MAPLE_HARDWARE 1

#define LED_BANK GPIOB
#define LED_PIN 12
#define LED_ON_STATE 0

/* On the Ficus, use KEY1 as BUT on PC11 */
#define BUTTON_BANK GPIOC
#define BUTTON_PIN 11
#define BUTTON_PRESSED_STATE 0

/* USB Disc Pin Setup. USB DISC is PE11 */
#define USB_DISC_BANK GPIOE
#define USB_DISC 11


victor_pv
Fri Oct 16, 2015 3:50 am
fredbox wrote:I created the symbolic links to arm-none-eabi that were buried in the .arduino15//packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/ folder and managed to recompile the existing bootloaders using make_all.bat. The compile was successful and I checked the md5 sums on a couple of the bin files to make sure that they matched.

I modified config.h to add my board:#elif defined TARGET_FICUS

#define HAS_MAPLE_HARDWARE 1

#define LED_BANK GPIOB
#define LED_PIN 12
#define LED_ON_STATE 0

/* On the Ficus, use KEY1 as BUT on PC11 */
#define BUTTON_BANK GPIOC
#define BUTTON_PIN 11
#define BUTTON_PRESSED_STATE 0

/* USB Disc Pin Setup. USB DISC is PE11 */
#define USB_DISC_BANK GPIOE
#define USB_DISC 11


RogerClark
Fri Oct 16, 2015 4:08 am
If you set that wrong, what happens is that after an upload and subsequent reset the board stays in bootloader mode, and never runs the sketch. You can either track down whether that button is active high or low, and use 1 or 0 correspondingly, or if just test one and it the board stays in bootloader mode, try the other mode.

You can also define that it doest have a button, but off the top of my head, I can’t recall how you configure it that way, but I’m pretty sure if you look though the config file that one of the boards does not have a button


fredbox
Sat Oct 17, 2015 2:45 am
Some progress.

I commented out the line “HAS_MAPLE_HARDWARE” as well as the three defines for the button.

Recompiled and still no joy. Just a steadily blinking LED.

I then removed the USB_EN jumper that was connected to PE11 and ran a temporary jumper to ground pin 1 of J51 which permanently puts the 1.5K resistor in the circuit.

After that, it enumerated as a DFU device and I was able to upload a test sketch. /dev/ttyACM0 was there and printing diagnostic messages.

I can use it like this, but I would like to figure out how to use the transistor to switch the resistor in and out of the circuit.

With HAS_MAPLE_HARDWARE and the J51 jumper back in place, it doesn’t work. I can see PE11 briefly changing when I press the reset button. I’m suspecting a timing issue. I tried changing the delay in usb.c where it sets the disconnect bit low, but I didn’t find a value that worked.

The Maple Mini uses two transistors to switch the resistor in the circuit, but the logic seems to be the same. A logic 1 disables the resistor and a logic 0 enables it.


victor_pv
Sat Oct 17, 2015 6:47 am
fredbox wrote:

I can use it like this, but I would like to figure out how to use the transistor to switch the resistor in and out of the circuit.

With HAS_MAPLE_HARDWARE and the J51 jumper back in place, it doesn’t work. I can see PE11 briefly changing when I press the reset button. I’m suspecting a timing issue. I tried changing the delay in usb.c where it sets the disconnect bit low, but I didn’t find a value that worked.

The Maple Mini uses two transistors to switch the resistor in the circuit, but the logic seems to be the same. A logic 1 disables the resistor and a logic 0 enables it.


fredbox
Sat Oct 17, 2015 7:50 pm
I believe this code in usb.c in the bootloader code is part of the problem when HAS_MAPLE_HARDWARE is defined:#ifdef HAS_MAPLE_HARDWARE
/* Setup USB DISC pin as output open drain */
SET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC),(GET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC)) & crMask(USB_DISC)) | CR_OUTPUT_OD << CR_SHITF(LED_PIN));

Leave a Reply

Your email address will not be published. Required fields are marked *