198 lines
8.4 KiB
Plaintext
198 lines
8.4 KiB
Plaintext
|
|
%%{
|
||
|
|
var module = system.modules['/driverlib/adc.js'];
|
||
|
|
let device_adc_char =
|
||
|
|
system.getScript("/driverlib/adc/adc_char.js");
|
||
|
|
let Common = system.getScript("/driverlib/Common.js");
|
||
|
|
let device_driverlib_peripheral =
|
||
|
|
system.getScript("/driverlib/device_driverlib_peripherals/" +
|
||
|
|
Common.getDeviceName().toLowerCase() + "_adc.js");
|
||
|
|
var nameOfModule = "adc";
|
||
|
|
var nameOfPeripheral = module.peripheralName;
|
||
|
|
var width = 3;
|
||
|
|
var total_number_socs = 16;
|
||
|
|
var high_priority_x_offset = 6;
|
||
|
|
var timing_x_offset = 8;
|
||
|
|
var sysclk_width = 0.5;
|
||
|
|
var instance_x_offset = 0;
|
||
|
|
var instance_y_offset = 0;
|
||
|
|
var colors = [
|
||
|
|
'#FFA0A0',
|
||
|
|
'#A0FFA0',
|
||
|
|
'#A0A0FF',
|
||
|
|
'#FFFFA0',
|
||
|
|
'#A0FFFF',
|
||
|
|
'#FFA0FF',
|
||
|
|
'#5EE0BE'
|
||
|
|
]
|
||
|
|
|
||
|
|
if (module != null)
|
||
|
|
{
|
||
|
|
%%}
|
||
|
|
digraph {
|
||
|
|
graph [fontname = "helvetica"];
|
||
|
|
node [fontname = "helvetica"];
|
||
|
|
edge [fontname = "helvetica"];
|
||
|
|
graph [mclimit=50 nodesep=0.5 rankdir=LR ranksep=1.25]
|
||
|
|
|
||
|
|
node [shape = circle style=filled];
|
||
|
|
|
||
|
|
%%{
|
||
|
|
for(var instanceIndex = 0; instanceIndex < module.$instances.length; instanceIndex++) {
|
||
|
|
var instance = module.$instances[instanceIndex];
|
||
|
|
var instanceName = instance.adcBase.replace("_BASE", "");
|
||
|
|
var instanceNamePrepend = instanceName.toLowerCase() + "_"
|
||
|
|
var highPri = instance.socHighPriorityMode;
|
||
|
|
var number_highpri_socs = device_driverlib_peripheral.ADC_PriorityMode.findIndex(x => x.name == highPri);
|
||
|
|
var number_roundrobin_socs = total_number_socs - number_highpri_socs
|
||
|
|
var alpha = Math.PI*2/number_roundrobin_socs
|
||
|
|
var r = width/2/Math.sin(alpha/2)
|
||
|
|
if (number_roundrobin_socs < 2)
|
||
|
|
{
|
||
|
|
r = width;
|
||
|
|
angle = 0;
|
||
|
|
}
|
||
|
|
var angle = 0;
|
||
|
|
var x = 0;
|
||
|
|
var y = 0;
|
||
|
|
%%}
|
||
|
|
%%{
|
||
|
|
for (var i = number_highpri_socs; i < total_number_socs; i++) {
|
||
|
|
x = r*Math.sin(angle) + instance_x_offset;
|
||
|
|
y = r*Math.cos(angle) + instance_y_offset;
|
||
|
|
angle = angle + alpha
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend`SOC`i.toString()` [label="`instanceName + " SOC" + i.toString()`" fillcolor="`colors[instanceIndex]`" pos="`x.toFixed(3)`,`y.toFixed(3)`!"]
|
||
|
|
%%{
|
||
|
|
}
|
||
|
|
|
||
|
|
y = r
|
||
|
|
for (var i = 0; i < number_highpri_socs; i++)
|
||
|
|
{
|
||
|
|
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend`SOC`i.toString()` [fillcolor="`colors[instanceIndex]`" pos="`(high_priority_x_offset*width + instance_x_offset).toFixed(3)`, `(y + instance_y_offset).toFixed(3)`!"]
|
||
|
|
%%{
|
||
|
|
y = y - width
|
||
|
|
}
|
||
|
|
|
||
|
|
for (var i = number_highpri_socs; i < total_number_socs; i++) {
|
||
|
|
if (i < total_number_socs - 1){
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend`SOC`(i).toString()` -> `instanceNamePrepend`SOC`(i+1).toString()`
|
||
|
|
%%{
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend`SOC`(i).toString()` -> `instanceNamePrepend`SOC`number_highpri_socs.toString()`
|
||
|
|
%%{
|
||
|
|
}
|
||
|
|
}
|
||
|
|
%%}
|
||
|
|
%%{
|
||
|
|
instance_x_offset = 0;
|
||
|
|
instance_y_offset = instance_y_offset - ((total_number_socs + 1)*width);
|
||
|
|
}
|
||
|
|
%%}
|
||
|
|
node [shape=rect style=filled];
|
||
|
|
%%{
|
||
|
|
instance_y_offset = 0;
|
||
|
|
instance_x_offset = 0;
|
||
|
|
for (var adcTrigger of device_driverlib_peripheral.ADC_Trigger)
|
||
|
|
{
|
||
|
|
var adcTriggerDisplayName = adcTrigger.displayName;
|
||
|
|
var adcTriggerName = adcTrigger.name;
|
||
|
|
var triggerNameInserted = false;
|
||
|
|
|
||
|
|
instance_x_offset = 0;
|
||
|
|
|
||
|
|
for (var instanceIndex = 0; instanceIndex < module.$instances.length; instanceIndex++) {
|
||
|
|
var instance = module.$instances[instanceIndex];
|
||
|
|
var instanceName = instance.adcBase.replace("_BASE", "");
|
||
|
|
var instanceNamePrepend = instanceName.toLowerCase() + "_"
|
||
|
|
var instanceClockDiv = parseFloat(instance.adcClockPrescaler.replace("ADC_CLK_DIV_", "").replace("_", "."))
|
||
|
|
var instanceAdcClockPrescaler = instance.adcClockPrescaler
|
||
|
|
var highPri = instance.socHighPriorityMode;
|
||
|
|
var number_highpri_socs = device_driverlib_peripheral.ADC_PriorityMode.findIndex(x => x.name == highPri);
|
||
|
|
|
||
|
|
var conversion_time = device_adc_char.tEOC_12bit_SYSCLK[instanceAdcClockPrescaler];
|
||
|
|
if (["F2837xD", "F2837xS", "F2838x"].includes(Common.getDeviceName()))
|
||
|
|
{
|
||
|
|
if (instance.adcResolutionMode == "ADC_RESOLUTION_16BIT")
|
||
|
|
{
|
||
|
|
conversion_time = device_adc_char.tEOC_16bit_SYSCLK[instanceAdcClockPrescaler];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var adc_socs_with_trigger_rr = [];
|
||
|
|
var adc_socs_with_trigger_hp = [];
|
||
|
|
for (var socIndex = 0; socIndex < 16; socIndex++) {
|
||
|
|
if (instance["enableBurstMode"])
|
||
|
|
{
|
||
|
|
if (socIndex >= number_highpri_socs)
|
||
|
|
{
|
||
|
|
if (instance["burstTrigger"] == adcTriggerName)
|
||
|
|
{
|
||
|
|
adc_socs_with_trigger_rr.push(
|
||
|
|
{
|
||
|
|
soc: "soc" + socIndex,
|
||
|
|
window: instance["soc" + socIndex.toString() + "SampleWindow"]
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (instance["soc" + socIndex.toString() + "Trigger"] == adcTriggerName)
|
||
|
|
{
|
||
|
|
if (socIndex < number_highpri_socs)
|
||
|
|
{
|
||
|
|
adc_socs_with_trigger_hp.push(
|
||
|
|
{
|
||
|
|
soc: "soc" + socIndex,
|
||
|
|
window: instance["soc" + socIndex.toString() + "SampleWindow"]
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (!instance["enableBurstMode"])
|
||
|
|
{
|
||
|
|
adc_socs_with_trigger_rr.push(
|
||
|
|
{
|
||
|
|
soc: "soc" + socIndex,
|
||
|
|
window: instance["soc" + socIndex.toString() + "SampleWindow"]
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
if (adc_socs_with_trigger_rr.length > 0) {
|
||
|
|
instance_x_offset = 0;
|
||
|
|
if (!triggerNameInserted) {
|
||
|
|
instance_y_offset = instance_y_offset - width
|
||
|
|
%%}
|
||
|
|
`adcTriggerName`[label="`adcTriggerDisplayName`" fillcolor="yellow" fontsize="40" color="white" pos="`(timing_x_offset*width + instance_x_offset).toFixed(3)`,`instance_y_offset.toFixed(3)`!"]
|
||
|
|
%%{
|
||
|
|
instance_y_offset = instance_y_offset - width
|
||
|
|
triggerNameInserted = true;
|
||
|
|
}
|
||
|
|
instance_y_offset = instance_y_offset - width
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend + adcTriggerName`[label="`instanceName`" fontsize="40" fillcolor="white" color="white" pos="`(timing_x_offset*width + instance_x_offset).toFixed(3)`,`instance_y_offset.toFixed(3)`!"]
|
||
|
|
%%{
|
||
|
|
instance_x_offset = instance_x_offset + width
|
||
|
|
for (var adc_soc_info of adc_socs_with_trigger_rr){
|
||
|
|
var adc_soc = adc_soc_info.soc;
|
||
|
|
var soc_width = conversion_time*sysclk_width + adc_soc_info.window*sysclk_width
|
||
|
|
var soc_pos = timing_x_offset*width + soc_width/2 + instance_x_offset
|
||
|
|
%%}
|
||
|
|
`instanceNamePrepend + adcTriggerName + "_" + adc_soc`[label="`adc_soc` (S+H[SYSCLK]: `adc_soc_info.window.toString()`, Conv[SYSCLK]: `conversion_time.toString()`)" fillcolor="`colors[instanceIndex]`" width="`(soc_width).toFixed(3)`" pos="`(soc_pos).toFixed(3)`,`instance_y_offset.toFixed(3)`!"]
|
||
|
|
%%{
|
||
|
|
instance_x_offset = instance_x_offset + soc_width
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
%%}
|
||
|
|
}
|