MBSP

Microcontroller Board Support Package

User Tools

Site Tools


configuration_json

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
configuration_json [ 21.04.2025 12:14] larsconfiguration_json [ 08.10.2025 14:32] (current) lars
Line 40: Line 40:
 The user shall not be bothered with the details of the used peripheral. The user should therefore not depend on peripheral names ("SPI0", "UART3", "GPIO PA9", ..) but refer to these resources by names that make sense for the user. These names are defined in this file. The user shall not be bothered with the details of the used peripheral. The user should therefore not depend on peripheral names ("SPI0", "UART3", "GPIO PA9", ..) but refer to these resources by names that make sense for the user. These names are defined in this file.
  
 +===== Types of Settings =====
  
-===== Example =====+Each setting has a type. The following types are allowed:
  
-<code> +  * string 
-{ +  * enum 
-    "vendor_name": "Geehy", +  * int 
-    "chip_name": "APM32F411VC", +  * bool
-    "digital_output":+
-        "green_led":+
-            "type": "push pull", +
-            "pad": "PA3" +
-        } +
-    } +
-    "SPI":+
-        ... +
-    } +
-+
-</code>+
  
-Keys like *digital_output* and *SPI* represent group names and are taken from a predefined set of group names understood by MBSP. Keys nested within them are arbitrary user-defined names for a instance in that group. In those instances the keys are from the defined set specific for that group.+==== string ====
  
 +The value is a text.
  
-===== general settings =====+**Example:** "chip_name": "APM32F411VC"
  
-these are settings on the top layer that effect the whole project. +==== enum ====
-    +
-==== vendor_name ====+
  
-Name of the company that sells the micro controller. As listed on https://chipselect.org+The value is one out of a limited number of possible values.
  
-**type**: string+**Example:** "type""push pull"
  
-==== chip_name ====+==== int ====
  
-Model number of the micro controllerAs listed on https://chipselect.org+The value is a number.
  
-**type**: string+**Example:** "irq""23"
  
-Model number is truncated so that it only contains relevant differences for code generation: flash and ram sizes are relevant, temperature range or package are not.+==== bool ====
  
 +The value is either "enabled" or "disabled"
  
-==== project_type ====+**Example:** "pull_up": "enabled"
  
-what type of project to generate. +===== Example =====
- +
-**type**: string +
- +
-**default**: "make" +
- +
-Possible values are: +
-  * "hal only" : only creates the hardware driver files (in the hal/ folder) and hardware definitions (in the hal/hw/ folder) +
-  * "embeetle" : create an Embeetle IDE project +
-  * "make" :  creates a makefile based "blinky" project. +
- +
- +
-==== file_comment ==== +
- +
-defines the comment at the top of each generated file. +
- +
-**type**: string +
- +
-**default**: "created" +
- +
-Possible values are: +
-  * "created" : file comment list date and time of file creation as well as configuration file name. +
-  * "minimal" : short comment only stating the file name and that it was automatically created. +
- +
-==== run_from ==== +
- +
-defines the location of the firmware code when run. +
- +
-**type**: string +
- +
-**default**: "flash" +
- +
-Possible values are: +
-  * "flash" : firmware is located and run from the flash memory. +
-  * "ram" : firmware is located and run from the RAM. +
-  * "flash2ram" : firmware is located in flash, copied to RAM on boot and then executed from RAM. +
- +
-==== path_prefix ==== +
- +
-if you use a "hal only" MBSP project located in a sub folder of your project then the name of the sub folder goes here. +
- +
-**type**: string +
- +
-**default**: "" +
- +
- +
-===== clock group ===== +
- +
-configuration of the used clocks. +
- +
-<code> +
-    "clock":+
-        "cpu":+
-            "source" : "hse", +
-            "frequency" : "12 MHz", +
-        } +
-    } +
-</code> +
- +
-==== source ==== +
- +
-defines the source of the clock signal. Supported clock sources are: +
-  * "hse"  (High speed external) +
-  * ... +
- +
-**type**: enum +
- +
-**default**: hse +
- +
-==== frequency ==== +
- +
-defines the frequency that this clock has.  +
- +
-**type**: string (Hz, kHz, MHz) +
- +
-**default**: "1 MHz" +
- +
- +
- +
-===== digital_output group ===== +
- +
-This group contains all digital output signals. +
- +
-Each signal is a sub group with the signal name as the group name.+
  
 <code> <code>
 +{
 +    "vendor_name": "Geehy",
 +    "chip_name": "APM32F411VC",
     "digital_output": {     "digital_output": {
         "green_led": {         "green_led": {
-            "type": "push pull"+            "type": "push pull",
             "pad": "PA3"             "pad": "PA3"
         }         }
     }     }
-</code> 
- 
-==== type ==== 
- 
-defines what type of output mode should be used. Type can be: 
-  * push pull 
-  * open drain 
- 
-**type**: enum 
- 
-**default**: push pull 
- 
-==== pad ==== 
- 
-defines the chip pad that the signal should be output on. 
- 
-**type**: string 
- 
-**default**: no default possible 
- 
-==== invert ==== 
- 
-If this setting is set to "on" then turning this output "on" will generate a Low (Gnd) signal. Turning it "off" will generate a High (Vcc) level. 
- 
-If this setting is set to "off" (=default) then turning this output "on" will generate a High (Vcc) signal. Turning it "off" will generate a Low (Gnd) level. 
- 
-**type**: string 
- 
-**default**: "off" 
- 
- 
-===== digital_input group ===== 
- 
-This group contains all digital input signals. 
- 
-Each signal is a sub group with the signal name as the group name. 
- 
- 
-==== pad ==== 
- 
-defines the chip pad that the signal should be read from. 
- 
-**type**: string 
- 
- 
-===== analogue_input (ADC) group ===== 
- 
-TBD 
- 
- 
-===== analogue_output (DAC) group ===== 
- 
-TBD 
- 
- 
-===== Timer group ===== 
- 
-This group contains all timer and counter peripherals. 
- 
-<code> 
-    "timer": { 
-        "ms_tick": { 
-            "peripheral" : "systick", 
-            "mode" : "count overflows", 
-            "frequency" : "1 kHz", 
-        } 
-    } 
-</code> 
- 
-==== peripheral ==== 
- 
-defines which peripheral to use. peripherals can be: 
-  * systick (part of the ARM core) 
-  * timer1 
-  * timer2 
-  * ... 
- 
-**type**: String 
- 
-**default**: systick 
- 
-==== mode ==== 
- 
-defines the operation mode the timer/counte operates in. Possible modes are: 
-  * count overflows 
- 
- 
-**type**: enum 
- 
-**default**: count overflows 
- 
-==== frequency ==== 
- 
-The frequency defines the time between timer overflows. 1kHz means that the time between overflow events is 1/(1 kHz) = 1 ms. 
- 
-**type**: string (Hz, kHz, MHz) 
- 
-**default**: "1 kHz" 
- 
- 
- 
- 
-===== RTC group ===== 
- 
-TBD 
- 
- 
-===== UART group ===== 
- 
-This group defines all used Universal Asynchronous Receiver Transmitter (UART) interfaces. 
- 
-Each UART is a sub group with the UART name as the group name. 
- 
-<code> 
-    "UART": { 
-        "debug_uart": { 
-            "pad_tx": "PA5", 
-            "pad_rx": "PA6", 
-            "pad_cts": "PA7", 
-            "pad_rts": "PA15", 
-            "bits_per_packet": "8", 
-            "parity": "None", 
-            "stop_bits": "1", 
-            "baud_rate": "115200", 
-            "hardware_flow_control": "no", 
-            "receive_buffer_size": "100", 
-            "send_buffer_size": "500", 
-            "peripheral" : "UART0", 
-            "IRQ" : "20",  
-            "IRQ_priority" : "0", 
-        } 
-    } 
-</code> 
- 
-=== pad_tx === 
- 
-The UART will send data on this pin. (Idle = High). Either this or the pad_rx must be given. 
- 
-=== pad_rx === 
- 
-The UART will receive (read) signals on this pin. Either this or pad_rx must be given. 
- 
-=== pad_cts === 
- 
-Clear to send signal for flow control. Will not be used if not defined. 
- 
-=== pad_rts === 
- 
-Request to Send signal for flow control. Will not be used if not defined. 
- 
- 
-==== bits_per_packet ==== 
- 
-defines the number of data bits. Possible values are: 
-  * 7 
-  * 8 
-  * 9 
- 
-**type**: enum 
- 
-**default**: 8 
- 
-==== parity ==== 
- 
-defines the parity bit. Possible values are: 
-  * None : no parity bit used. 
-  * Odd :  the parity bits value makes sure that the packet contains an **__odd__** number of bits with value "1". 
-  * Even : the parity bits value makes sure that the packet contains an **__even__** number of bits with value "1". 
- 
-**type**: enum 
- 
-**default**: None 
- 
- 
-==== stop_bits ==== 
- 
-defines the number of stop bits. Possible values are: 
-  * 1 
-  * 1,5 
-  * 2 
- 
-**type**: enum 
- 
-**default**: 8 
- 
- 
-==== baud_rate ==== 
- 
-defines the number of bits send per second. 
- 
-**type**: int 
- 
-**default**: 115200 
- 
- 
-==== hardware_flow_control ==== 
- 
-defines if the Request to Send (RTS) and Clear to send (CTS) signals should be used for flow control. Possible values are: 
-  * off (RTS and CTS pins are not used. 
-  * RTS only 
-  * CTS only 
-  * on (RTS and CTS signals are used) 
- 
-**type**: enum 
- 
-**default**: off 
- 
-==== receive_buffer_size ==== 
- 
-defines the number of bytes in the receive buffer of the driver. 
- 
-**type**: int 
- 
-**default**: 100 
- 
-==== send_buffer_size ==== 
- 
-defines the number of bytes in the send buffer of the driver. 
- 
-**type**: int 
- 
-**default**: 500 
- 
-==== peripheral ==== 
- 
-name of the UART peripheral to use. 
- 
-**type**: String 
- 
-==== IRQ ==== 
- 
-The interrupt number of the peripheral. 
- 
-**type**: int 
- 
-==== IRQ_priority ==== 
- 
-The interrupt priority of the interrupt. 
- 
-**type**: int 
- 
- 
-===== SPI group ===== 
- 
-This group defines all used  Serial Peripheral Interface (SPI) interfaces. 
- 
-Each SPI interface is a sub group with the SPI name as the group name. 
- 
-<code> 
     "SPI": {     "SPI": {
-        "encoder_spi":+        ...
-            "pad_sck": "PA5", +
-            "pad_miso": "PA6", +
-            "pad_mosi": "PA7", +
-            "pad_ncs": "PA15", +
-            "role": "master", +
-            "communication_mode": "duplex", +
-            "frame_format": "motorola", +
-            "clock_polarity": "idle_low", +
-            "clock_phase": "sample_on_leading_edge", +
-            "bit_order": "msb_first", +
-            "baud_rate": "10 MHz", +
-        }+
     }     }
 +}
 </code> </code>
  
 +Keys like *digital_output* and *SPI* represent group names and are taken from a predefined set of group names understood by MBSP. Keys nested within them are arbitrary user-defined names for a instance in that group. In those instances the keys are from the defined set specific for that group.
  
-=== pad_sck === 
- 
-Serial Clock. 
- 
-=== pad_mosi === 
- 
-"Master Out Slave In" data signal. 
- 
-=== pad_miso === 
- 
-"Master In Slave Out" data signal. 
- 
-=== pad_ncs === 
- 
-Chip Select signal (Low active). 
- 
-=== role === 
- 
-Is either master(host) or slave(device). 
- 
-**type**: enum 
- 
-**default**: master 
- 
-=== communication_mode === 
- 
-Describes the communication. Possible values are: 
-  * duplex : the traditional mode using MISO and MOSI to transmit and receive at the same time. 
-  * half-duplex : meaning the same wire between master and slave is used for both directions. 
-  * receive-only : send line is not used 
-  * send-only : receive Line is not used. 
- 
-**type**: enum 
- 
-**default**: duplex 
- 
-=== frame_format === 
- 
-Describes the communication. Possible values are: 
-  * motorola : the "normal" SPI. 
-  * ti :  
- 
-**type**: enum 
- 
-**default**: motorola 
- 
-=== clock_polarity === 
-Also often called CPOL. Describes the communication. Possible values are: 
-  * idle_low 
-  * idle_high 
- 
-**type**: enum 
- 
-**default**: idle_low 
- 
-=== clock_phase === 
-Also often called CPHA. Describes the communication. Possible values are: 
-  * sample_on_leading_edge : samples the data on the edge from idle value to non-idle value. 
-  * sample_on_trailinging_edge : samples the data on the edge from non-idle value to idle value. 
- 
-**type**: enum 
- 
-**default**: sample_on_leading_edge 
- 
- 
-=== SPI Mode === 
-Sometimes the documentation talks about a SPI Mode with the value of 0 to 3. This mode maps to the phase and polarity as described in the following table: 
- 
-^ Mode ^ CPOL ^ CPHA ^ description^ 
-| 0 | 0 | 0 | clock: idle_low, phase: sample_on_leading_edge | 
-| 1 | 0 | 1 | clock: idle_low, phase: sample_on_trailing_edge | 
-| 2 | 1 | 0 | clock: idle_high, phase: sample_on_leading_edge | 
-| 3 | 1 | 1 | clock: idle_high, phase: sample_on_trailing_edge | 
- 
- 
- 
-=== bit_order === 
-Describes the communication. Possible values are: 
-  * msb_first : most significant bit first (bits on the line :  76543210 ) 
-  * lsb_first : least significant bit first (bits on the line:  01234567 ) 
- 
-**type**: enum 
- 
-**default**: msb_first 
- 
-=== baud_rate === 
- 
-Is the number of bits per second exchanged on the data lines. Expressed as frequency of the clock line. 
  
-**type**: int (Hz)+===== All the Settings ===== 
 +  [[adc_group            | analogue_input (ADC) group]] 
 +  [[dac_group            | analogue_output (DAC) group]] 
 +  [[clock_group          | clock group]] 
 +  [[digital_output_group | digital_output group]] 
 +  * [[digital_input_group  | digital_input group]] 
 +  * [[general_settings     | general settings]] 
 +  * [[I2C_group            | Inter-Integrated Circuit (I2Cgroup]] 
 +  * [[QSPI_group           | QSPI group]] 
 +  * [[rtc_group            | Real Time Clock group]] 
 +  * [[SPI_group            | SPI group]] 
 +  * [[timer_group          | Timer group]] 
 +  * [[UART_group           | UART group]] 
 +  * [[watchdog_group       | watchdog group]]
  
configuration_json.1745237695.txt.gz · Last modified: by lars