Close
0%
0%

Atmel SAM G55 development board

Small, simple SAM G55 development board with extra functions

Similar projects worth following
Small, simple SAM G55 (ARM Cortex M4F) development board with extra functions

Block diagram


Features

  • SAM G55 MCU with FPU @ 120MHz ( 512 Kbytes Flash /  176 Kbytes SRAM )
  • ARM Cortex M4F core
  • JTAG ISP / Debug port ( external programmer / debugger needed )
  • micro USB port for communication and battery charging
  • LiPo connector and charger
  • 3.3V / 1A switching regulator ( ...to feed the external peripherals )
  • 32.768 kHz crystal
  • User button and LED
  • Reset button
  • Micro SD card slot ( SPI )
  • GPIO port header 
  • Extra power header for the external peripherals 

  • Mini audio card

    x-labz12/07/2017 at 20:52 0 comments

    Super compact audio card for any kind of I2S / PDM capable computer

     PDM digital MEMS microphone

     I2S class D amplifier.

    ...excellent audio quality for speech applications with only a few components!

  • I2S DMA transfer / interrupt

    x-labz11/20/2017 at 14:28 0 comments

    Setting up the I2S DMA transfer with interrupt was not that straightforward, the datasheet is a little bit "tight-lipped" :-) ...and the official ASF example isn't commented good enough...

    So my findings:

    I started with the I2S example from the ASF 3.35.1  using Atmel Studio 7

    In my opinion it works as expected, but You should be aware of some rules:

    • You should use the second PDC channel if you are using only one PDC! That is reffered as the right channel in the datasheet: (0x200–0x224 Reserved for PDC registers for right side) page:874
    • The TXRDY interrupt also works, but the interrupt should be disabled immediately in the Interrupt service function, and reenabled after the next PDC transfer has been configured and enabled.

    ATMEL freaks post: https://community.atmel.com/forum/samg55-i2s-dmapdc-endtx-interrupt-issue#comment-2327756 

    The original ASF example  modified for mono transfer only:

    #include <asf.h>
    #include <conf_test.h>
    #include <string.h>
    
    #define SOUND_SAMPLES 0x100
    int16_t output_samples_left[SOUND_SAMPLES] = {
        0x7F, 0x7F, 0x7D, 0x7E, 0x7D, 0x7E, 0x7D, 0x7E,
        0x7D, 0x7D, 0x7D, 0x7F, 0x7E, 0x7D, 0x7E, 0x7D,
        0x7D, 0x7D, 0x7C, 0x7A, 0x7B, 0x7C, 0x7A, 0x7A,
        0x7C, 0x7B, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x80,
        0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84,
        0x86, 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84,
        0x82, 0x84, 0x84, 0x83, 0x85, 0x85, 0x82, 0x83,
        0x82, 0x82, 0x82, 0x82, 0x7F, 0x80, 0x81, 0x7E,
        0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,
        0x7C, 0x7E, 0x7E, 0x7F, 0x7F, 0x7D, 0x7D, 0x7C,
        0x7D, 0x7D, 0x7D, 0x7B, 0x7C, 0x7B, 0x7C, 0x7D,
        0x7E, 0x7E, 0x7F, 0x7E, 0x7D, 0x7F, 0x7E, 0x7D,
        0x7D, 0x7B, 0x7D, 0x7D, 0x7E, 0x7D, 0x7D, 0x7E,
        0x7D, 0x7D, 0x7D, 0x7E, 0x7E, 0x7C, 0x7E, 0x7E,
        0x7F, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, 0x81,
        0x7F, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81,
        0x82, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7F, 0x80,
        0x7F, 0x7F, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x82,
        0x83, 0x84, 0x81, 0x82, 0x82, 0x81, 0x82, 0x81,
        0x80, 0x80, 0x82, 0x80, 0x80, 0x80, 0x80, 0x80,
        0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x81, 0x80,
        0x80, 0x7F, 0x7F, 0x80, 0x81, 0x80, 0x80, 0x7E,
        0x7E, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F,
        0x80, 0x80, 0x81, 0x7E, 0x7F, 0x80, 0x7E, 0x7E,
        0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7C, 0x7D, 0x7C,
        0x81, 0x7D, 0x7C, 0x7C, 0x7B, 0x7D, 0x7C, 0x7D,
        0x7D, 0x7D, 0x7B, 0x7D, 0x80, 0x80, 0x82, 0x80,
        0x7F, 0x80, 0x83, 0x82, 0x80, 0x82, 0x84, 0x86,
        0x86, 0x84, 0x84, 0x86, 0x87, 0x84, 0x85, 0x85,
        0x85, 0x85, 0x86, 0x85, 0x85, 0x84, 0x83, 0x80,
        0x81, 0x82, 0x83, 0x7F, 0x7E, 0x7F, 0x7F, 0x80,
        0x7E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7D, 0x7D, 0x7C
    };
    int16_t output_samples_right[SOUND_SAMPLES] = {
        0x5A, 0x7F, 0x7D, 0x7E, 0x7D, 0x7E, 0x7D, 0x7E,
        0x7D, 0x7D, 0x7D, 0x7F, 0x7E, 0x7D, 0x7E, 0x7D,
        0x7D, 0x7D, 0x7C, 0x7A, 0x7B, 0x7C, 0x7A, 0x7A,
        0x7C, 0x7B, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x80,
        0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84,
        0x86, 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84,
        0x82, 0x84, 0x84, 0x83, 0x85, 0x85, 0x82, 0x83,
        0x82, 0x82, 0x82, 0x82, 0x7F, 0x80, 0x81, 0x7E,
        0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,
        0x7C, 0x7E, 0x7E, 0x7F, 0x7F, 0x7D, 0x7D, 0x7C,
        0x7D, 0x7D, 0x7D, 0x7B, 0x7C, 0x7B, 0x7C, 0x7D,
        0x7E, 0x7E, 0x7F, 0x7E, 0x7D, 0x7F, 0x7E, 0x7D,
        0x7D, 0x7B, 0x7D, 0x7D, 0x7E, 0x7D, 0x7D, 0x7E,
        0x7D, 0x7D, 0x7D, 0x7E, 0x7E, 0x7C, 0x7E, 0x7E,
        0x7F, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, 0x81,
        0x7F, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81,
        0x82, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7F, 0x80,
        0x7F, 0x7F, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x82,
        0x83, 0x84, 0x81, 0x82, 0x82, 0x81, 0x82, 0x81,
        0x80, 0x80, 0x82, 0x80, 0x80, 0x80, 0x80, 0x80,
        0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x81, 0x80,
        0x80, 0x7F, 0x7F, 0x80, 0x81, 0x80, 0x80, 0x7E,
        0x7E, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F,
        0x80, 0x80, 0x81, 0x7E, 0x7F, 0x80, 0x7E, 0x7E,
        0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7C, 0x7D, 0x7C,
        0x81, 0x7D, 0x7C, 0x7C, 0x7B, 0x7D, 0x7C, 0x7D,
        0x7D, 0x7D, 0x7B, 0x7D, 0x80, 0x80, 0x82...
    Read more »

  • Overclocking

    x-labz10/20/2017 at 13:37 0 comments

    This experiment shows the overclocking results of the Atmel SAMG55 ARM Cortex M4F MCU.

    The settings used:

    - 3.3V supply voltage

    - CPU clock from the external 32.768 KHz crystal multiplied by the internal PLL

    - USB HID stack was running parallel 

    - 16K cache

    - 5 flash wait states

    - application runs from on-chip flash

    - test application is the encoding + decoding of a 320 sample frame with CODEC2 700C algorithm (http://www.rowetel.com/?page_id=452)

    The dataset:

    freq.120 MHz 130 MHz 140 MHz 150 MHz 160 MHz
    encode +
    decode time
    28,5 ms 26,5 ms  25 ms  23 ms  21,5 ms 

    120 MHz is the maximal CPU clock frequency allowed officially. The MCU was running stable at 160 MHz with continuous USB HID data communication. 

    The experiment shows, that 33% overclocking is still stable. 

  • Cache performance

    x-labz10/20/2017 at 13:25 0 comments

    Here are some statistics of the cache performance. The MCU is an Atmel SAMG55 Cortex M4 with FPU.

    The test algorithm is the state of the art CODEC2 voice coder (http://www.rowetel.com/?page_id=452)

    The test application uses the 700C coding setting. The chart below shows the average encoding +  decoding time in ms @ 120MHz with different cache size settings.

    The dataset:

    noCache 1K 2K 4K 8K 16K
    42 ms29,5 ms 28,5 ms 29,5 ms 28,5 ms 28,5 ms

  • First prototypes

    x-labz10/04/2017 at 10:52 0 comments

    First heartbeat(s)

    Atmel Software Framework (ASF) components work like charm! 

View all 5 project logs

Enjoy this project?

Share

Discussions

felipebrinkerhoffson wrote 08/22/2023 at 14:42 point

There has been a great deal of value to me in my involvement with the project. Would like to share it with the Spinneret Functions team so they can also read it and implement something new.

  Are you sure? yes | no

Tom wrote 10/20/2017 at 21:53 point

I want an easy way to test the product after it is assembled and NOT have assembly technicians use a debugger on the assembly line. Inserting a USB cable and looking for a CR response (as with SAM-BA) is easy to do with the Atmel E70. Don't know why Atmel didn't add USB to the bootloader code! Also the 10 pin SWD connector adds cost when already have USB!

Hope you add the schematic soon. Need to see if I am on the right track! Thanks!


  Are you sure? yes | no

x-labz wrote 10/23/2017 at 19:02 point

maybe you can use pogo pin connector instead of the expensive SWD connector...

  Are you sure? yes | no

Tom wrote 10/17/2017 at 22:22 point

I too am working on a SAM G55 project. Am frustrated that the bootloader does not work over USB

  Are you sure? yes | no

x-labz wrote 10/20/2017 at 13:20 point

I'd recommend to use an in system programmer / debugger, especially because of the debugger functionality. 

  Are you sure? yes | no

x-labz wrote 10/05/2017 at 06:30 point

This early version has some bugs, so no documentation will be published at the moment... Stay tuned! ;-)

  Are you sure? yes | no

elvis wrote 10/04/2017 at 12:37 point

Can you please add some schematic pics and bottom preview?

  Are you sure? yes | no

jockm wrote 07/09/2018 at 03:42 point

Agreed, I would love to see the schematic

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates