изменения от Евгения Лапутина внесены
This commit is contained in:
parent
54e5b58c74
commit
7d999ee9db
@ -114,40 +114,6 @@
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Default.822613596.756508344" name="/" resourcePath="src">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain.1894122480" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain" unusedChildren="">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951.543407706" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.466802332.759504983" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.466802332"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.436295316" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.1217908258">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH.472591069" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}/libraries/flash_api/f2838x/c28x/include/FlashAPI"/>
|
||||
<listOptionValue builtIn="false" value="${C2000WARE_COMMON_INCLUDE}"/>
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}/libraries/flash_api/f2838x/c28x/lib"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/Freemaster}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/Peripherals}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/ExternalEEPROM}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device/driverlib}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device/driverlib/inc}"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INCLUDE_PATH}"/>
|
||||
<listOptionValue builtIn="false" value="${C2000WARE_HEADERS_INCLUDE}"/>
|
||||
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_INCLUDE_PATH}"/>
|
||||
<listOptionValue builtIn="false" value="C:/ti/ccs1230/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include"/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.PREINCLUDE.468315160" name="Specify a preinclude file (--preinclude)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.PREINCLUDE" valueType="includeFiles"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS.512750873" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS.1468101039" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS.1468909834" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS.1316460353" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.1957343580" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.1213820260"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.863811321" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.1905173719"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Default.822613596.27938925" name="/" resourcePath="device">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain.368910349" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain" unusedChildren="">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951.1469703709" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951"/>
|
||||
@ -300,33 +266,6 @@
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Default.1796646261.116309624" name="/" resourcePath="src">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain.742807764" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain" unusedChildren="">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.606629708.1507499021" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.606629708"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.197899427.1690574508" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.197899427"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.722248393" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.1037353257">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH.638189817" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="D:/MU/UFC/prj/UFC_Application-feature-sdfm/ufc_app/epwm_test/lib"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/vector}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/Peripherals}"/>
|
||||
<listOptionValue builtIn="false" value="D:/MU/UFC/prj/UFC_Application-feature-sdfm/ufc_app/epwm_test/src/ExternalEEPROM"/>
|
||||
<listOptionValue builtIn="false" value="D:/MU/UFC/prj/UFC_Application-feature-sdfm/ufc_app/epwm_test/Freemaster"/>
|
||||
<listOptionValue builtIn="false" value="D:/MU/UFC/prj/UFC_Application-feature-sdfm/ufc_app/epwm_test/src"/>
|
||||
<listOptionValue builtIn="false" value="D:/MU/UFC/prj/UFC_Application-feature-sdfm/ufc_app/epwm_test"/>
|
||||
<listOptionValue builtIn="false" value="C:/ti/c2000/C2000Ware_4_03_00_00/device_support/f2838x/common/include"/>
|
||||
<listOptionValue builtIn="false" value="C:/ti/c2000/C2000Ware_4_03_00_00/device_support/f2838x/headers/include"/>
|
||||
<listOptionValue builtIn="false" value="C:/ti/ccs1230/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS.78599801" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS.131602567" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS.1687924760" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS.18934784" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.535799121" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.1002978132"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.1567911238" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.1747906040"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="2838x_RAM_combined_lnk_cpu1.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
@ -450,7 +389,7 @@
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="src/Peripherals/pwm_interrupts.c|src/Peripherals/pwm_init.c|Freemaster|src/frmmstr_run.c|src/timer_base.c|src/Peripherals/i2c_init.c|src/ExternalEEPROM/ZD24C02A.c|src/ExternalEEPROM/GD25Q16ETIGR.c|src/ExternalEEPROM/BL25CM1A.c|src/Peripherals/spi_init.c|src/Peripherals/gpio_init.c|src/frm_uart.c|lib/f2838x_epwm.c|device/driverlib|2838x_RAM_combined_lnk_cpu1.cmd|2838x_FLASH_lnk_cpu1.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry excluding="Freemaster|lib/f2838x_epwm.c|device/driverlib|2838x_RAM_combined_lnk_cpu1.cmd|2838x_FLASH_lnk_cpu1.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
@ -570,40 +509,6 @@
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Default.822613596.438976718.src" name="/" resourcePath="src">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain.1780731488" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain" unusedChildren="">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951.543407706.1746685905" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.466802332.759504983.1039329628" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.466802332"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug.717028364" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.targetPlatformDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.961781934" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.compilerDebug.1012894622">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH.1332357797" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}/libraries/flash_api/f2838x/c28x/include/FlashAPI"/>
|
||||
<listOptionValue builtIn="false" value="${C2000WARE_COMMON_INCLUDE}"/>
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}/libraries/flash_api/f2838x/c28x/lib"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/Freemaster}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/Peripherals}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/src/ExternalEEPROM}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device/driverlib}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/device/driverlib/inc}"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INCLUDE_PATH}"/>
|
||||
<listOptionValue builtIn="false" value="${C2000WARE_HEADERS_INCLUDE}"/>
|
||||
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_INCLUDE_PATH}"/>
|
||||
<listOptionValue builtIn="false" value="C:/ti/ccs1230/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include"/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.PREINCLUDE.636442898" name="Specify a preinclude file (--preinclude)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.PREINCLUDE" valueType="includeFiles"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS.535925549" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS.1170985368" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS.243629335" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS.1203689063" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.137608464" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.linkerDebug.881262039"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.2034322710" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.hex.1158870401"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Default.822613596.438976718.device" name="/" resourcePath="device">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain.865381495" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.exe.DebugToolchain" unusedChildren="">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951.1469703709.393927600" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2075251951"/>
|
||||
|
||||
@ -1,31 +1,28 @@
|
||||
MEMORY
|
||||
{
|
||||
/* BEGIN is used for the "boot to SARAM" bootloader mode */
|
||||
BEGIN : origin = 0x000000, length = 0x000002
|
||||
BEGIN : origin = 0x000000, length = 0x000002 // CPU1 IPC SERVER
|
||||
BOOT_RSVD : origin = 0x000002, length = 0x0001AF /* Part of M0, BOOT rom will use this for stack */
|
||||
RAMM0 : origin = 0x0001B1, length = 0x00024F
|
||||
RAMM1 : origin = 0x000400, length = 0x0003F8 /* on-chip RAM block M1 */
|
||||
RAMM0 : origin = 0x0001B1, length = 0x00024F // CPU1 IPC SERVER
|
||||
RAMM1 : origin = 0x000400, length = 0x0003F8 // CPU1 IPC SERVER
|
||||
// RAMM1_RSVD : origin = 0x0007F8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
|
||||
RAMD01 : origin = 0x00C000, length = 0x001000
|
||||
RAMLS02 : origin = 0x008000, length = 0x001800
|
||||
RAMLS3 : origin = 0x009800, length = 0x000800
|
||||
RAMLS4 : origin = 0x00A000, length = 0x000800
|
||||
RAMLS56 : origin = 0x00A800, length = 0x001000
|
||||
RAMLS7 : origin = 0x00B800, length = 0x000800
|
||||
RAMGS0 : origin = 0x00D000, length = 0x001000
|
||||
RAMGS1 : origin = 0x00E000, length = 0x001000
|
||||
RAMGS2 : origin = 0x00F000, length = 0x001000
|
||||
RAMGS3 : origin = 0x010000, length = 0x001000
|
||||
RAMGS4 : origin = 0x011000, length = 0x001000
|
||||
RAMGS5 : origin = 0x012000, length = 0x001000
|
||||
RAMGS6 : origin = 0x013000, length = 0x001000
|
||||
RAMGS7 : origin = 0x014000, length = 0x001000
|
||||
RAMGS8 : origin = 0x015000, length = 0x001000
|
||||
RAMGS9 : origin = 0x016000, length = 0x001000
|
||||
RAMGS101112 : origin = 0x017000, length = 0x003000
|
||||
RAMGS13 : origin = 0x01A000, length = 0x001000
|
||||
RAMGS14 : origin = 0x01B000, length = 0x001000
|
||||
RAMGS15 : origin = 0x01C000, length = 0x000FF8
|
||||
RAMD0 : origin = 0x00C000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMD1 : origin = 0x00C800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS0 : origin = 0x008000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS1 : origin = 0x008800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS2 : origin = 0x009000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS3 : origin = 0x009800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS4 : origin = 0x00A000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS5 : origin = 0x00A800, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMLS6 : origin = 0x00B000, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMLS7 : origin = 0x00B800, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMGS0 : origin = 0x00D000, length = 0x001000 // CPU1 IPC BOOTLOADER
|
||||
RAMGS1 : origin = 0x00E000, length = 0x001000 // CPU1 IPC SERVER
|
||||
RAMGS2 : origin = 0x00F000, length = 0x001000 // CPU2 IPC SERVER
|
||||
RAMGS3 : origin = 0x010000, length = 0x001000 // CPU2 IPC SERVER
|
||||
RAMGS4 : origin = 0x011000, length = 0x001000 // CPU1 IPC SERVER
|
||||
RAMGS5 : origin = 0x012000, length = 0x001000 // CM IPC BOOTLOADER
|
||||
USB_CM_FIRMWARE : origin = 0x013000, length = 0x00A000 // CM USB SERVER
|
||||
// RAMGS15_RSVD : origin = 0x01CFF8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
|
||||
|
||||
/* Flash sectors */
|
||||
@ -43,6 +40,7 @@ MEMORY
|
||||
FLASH11 : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
|
||||
FLASH12 : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
|
||||
FLASH13 : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */
|
||||
|
||||
CPU1TOCPU2RAM : origin = 0x03A000, length = 0x000800
|
||||
CPU2TOCPU1RAM : origin = 0x03B000, length = 0x000800
|
||||
|
||||
@ -54,33 +52,29 @@ MEMORY
|
||||
RESET : origin = 0x3FFFC0, length = 0x000002
|
||||
}
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
codestart : > BEGIN
|
||||
.text : >> RAMD01 | RAMLS02 | RAMLS3 | RAMGS101112 //text - Code
|
||||
.cinit : > RAMM0 //cinit - Init values fos global vars
|
||||
.switch : > RAMM0 //switch - tables for switch statements
|
||||
.reset : > RESET, TYPE = DSECT /* not used, */
|
||||
.text : >> RAMM0 | RAMM1 | RAMD0 | RAMD1 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3
|
||||
.cinit : > RAMGS4
|
||||
.switch : > RAMLS3
|
||||
.reset : > RAMLS3, TYPE = DSECT /* not used, */
|
||||
|
||||
.stack : > RAMM1 //stack - Local vars
|
||||
.stack : > RAMLS4
|
||||
#if defined(__TI_EABI__)
|
||||
.bss : >> RAMLS56 | RAMGS101112
|
||||
.bss:output : > RAMLS3
|
||||
.init_array : > RAMM0
|
||||
.const : > RAMLS56
|
||||
.data : >> RAMLS56 | RAMLS7 | RAMGS101112
|
||||
.bss : >> RAMLS4 | RAMGS1
|
||||
.bss:output : > RAMLS4
|
||||
.init_array : > RAMLS4
|
||||
.const : > RAMLS4
|
||||
.data : > RAMLS4
|
||||
.sysmem : > RAMLS4
|
||||
#else
|
||||
.pinit : > RAMM0 //pinit - tables for global constructors (C++)
|
||||
.ebss : >> RAMLS56 //ebss - Global vars
|
||||
.econst : > RAMLS56
|
||||
.esysmem : > RAMLS56
|
||||
.pinit : > RAMLS4
|
||||
.ebss : > RAMLS4
|
||||
.econst : > RAMLS4
|
||||
.esysmem : > RAMLS4
|
||||
#endif
|
||||
|
||||
ramgs0 : > RAMGS0, type=NOINIT
|
||||
ramgs1 : > RAMGS1, type=NOINIT
|
||||
|
||||
MSGRAM_CPU1_TO_CPU2 > CPU1TOCPU2RAM, type=NOINIT
|
||||
MSGRAM_CPU2_TO_CPU1 > CPU2TOCPU1RAM, type=NOINIT
|
||||
MSGRAM_CPU_TO_CM > CPUTOCMRAM, type=NOINIT
|
||||
@ -89,7 +83,7 @@ SECTIONS
|
||||
/* The following section definition are for SDFM examples */
|
||||
|
||||
|
||||
.TI.ramfunc : {} > RAMM0
|
||||
.TI.ramfunc : {} > RAMGS1
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,31 +1,28 @@
|
||||
MEMORY
|
||||
{
|
||||
/* BEGIN is used for the "boot to SARAM" bootloader mode */
|
||||
BEGIN : origin = 0x000000, length = 0x000002
|
||||
BEGIN : origin = 0x000000, length = 0x000002 // CPU1 IPC SERVER
|
||||
BOOT_RSVD : origin = 0x000002, length = 0x0001AF /* Part of M0, BOOT rom will use this for stack */
|
||||
RAMM0 : origin = 0x0001B1, length = 0x00024F
|
||||
RAMM1 : origin = 0x000400, length = 0x0003F8 /* on-chip RAM block M1 */
|
||||
RAMM0 : origin = 0x0001B1, length = 0x00024F // CPU1 IPC SERVER
|
||||
RAMM1 : origin = 0x000400, length = 0x0003F8 // CPU1 IPC SERVER
|
||||
// RAMM1_RSVD : origin = 0x0007F8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
|
||||
RAMD01 : origin = 0x00C000, length = 0x001000
|
||||
RAMLS02 : origin = 0x008000, length = 0x001800
|
||||
RAMLS3 : origin = 0x009800, length = 0x000800
|
||||
RAMLS4 : origin = 0x00A000, length = 0x000800
|
||||
RAMLS56 : origin = 0x00A800, length = 0x001000
|
||||
RAMLS7 : origin = 0x00B800, length = 0x000800
|
||||
RAMGS0 : origin = 0x00D000, length = 0x001000
|
||||
RAMGS1 : origin = 0x00E000, length = 0x001000
|
||||
RAMGS2 : origin = 0x00F000, length = 0x001000
|
||||
RAMGS3 : origin = 0x010000, length = 0x001000
|
||||
RAMGS4 : origin = 0x011000, length = 0x001000
|
||||
RAMGS5 : origin = 0x012000, length = 0x001000
|
||||
RAMGS6 : origin = 0x013000, length = 0x001000
|
||||
RAMGS7 : origin = 0x014000, length = 0x001000
|
||||
RAMGS8 : origin = 0x015000, length = 0x001000
|
||||
RAMGS9 : origin = 0x016000, length = 0x001000
|
||||
RAMGS101112 : origin = 0x017000, length = 0x003000
|
||||
RAMGS13 : origin = 0x01A000, length = 0x001000
|
||||
RAMGS14 : origin = 0x01B000, length = 0x001000
|
||||
RAMGS15 : origin = 0x01C000, length = 0x000FF8
|
||||
RAMD0 : origin = 0x00C000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMD1 : origin = 0x00C800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS0 : origin = 0x008000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS1 : origin = 0x008800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS2 : origin = 0x009000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS3 : origin = 0x009800, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS4 : origin = 0x00A000, length = 0x000800 // CPU1 IPC SERVER
|
||||
RAMLS5 : origin = 0x00A800, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMLS6 : origin = 0x00B000, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMLS7 : origin = 0x00B800, length = 0x000800 // CPU1 IPC BOOTLOADER
|
||||
RAMGS0 : origin = 0x00D000, length = 0x001000 // CPU1 IPC BOOTLOADER
|
||||
RAMGS1 : origin = 0x00E000, length = 0x001000 // CPU1 IPC SERVER
|
||||
RAMGS2 : origin = 0x00F000, length = 0x001000 // CPU2 IPC SERVER
|
||||
RAMGS3 : origin = 0x010000, length = 0x001000 // CPU2 IPC SERVER
|
||||
RAMGS4 : origin = 0x011000, length = 0x001000 // CPU1 IPC SERVER
|
||||
RAMGS5 : origin = 0x012000, length = 0x001000 // CM IPC BOOTLOADER
|
||||
USB_CM_FIRMWARE : origin = 0x013000, length = 0x00A000 // CM USB SERVER
|
||||
// RAMGS15_RSVD : origin = 0x01CFF8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
|
||||
|
||||
/* Flash sectors */
|
||||
@ -43,10 +40,15 @@ MEMORY
|
||||
FLASH11 : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
|
||||
FLASH12 : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
|
||||
FLASH13 : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */
|
||||
CPU1TOCPU2RAM : origin = 0x03A000, length = 0x000800
|
||||
|
||||
CPU1TOCPU2RAM0 : origin = 0x03A000, length = 0x000008
|
||||
CPU1TOCPU2RAM1 : origin = 0x03A400, length = 0x000400 // CPU2 IPC SERVER
|
||||
|
||||
CPU2TOCPU1RAM : origin = 0x03B000, length = 0x000800
|
||||
|
||||
CPUTOCMRAM : origin = 0x039000, length = 0x000800
|
||||
CPUTOCMRAM0 : origin = 0x039000, length = 0x000400
|
||||
CPUTOCMRAM1 : origin = 0x039400, length = 0x000400, fill=0x0000
|
||||
|
||||
CMTOCPURAM : origin = 0x038000, length = 0x000800
|
||||
|
||||
CANA_MSG_RAM : origin = 0x049000, length = 0x000800
|
||||
@ -54,41 +56,35 @@ MEMORY
|
||||
RESET : origin = 0x3FFFC0, length = 0x000002
|
||||
}
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
codestart : > CPU1TOCPU2RAM
|
||||
.text : >> RAMGS1 | RAMGS2 //text - Code
|
||||
.cinit : > RAMGS0 //cinit - Init values fos global vars
|
||||
.switch : > RAMGS0 //switch - tables for switch statements
|
||||
.reset : > RESET, TYPE = DSECT /* not used, */
|
||||
codestart : > CPU1TOCPU2RAM1
|
||||
.text : >> RAMGS2 | RAMGS3
|
||||
.cinit : > RAMGS3
|
||||
.switch : > RAMGS3
|
||||
.reset : > RAMGS3, TYPE = DSECT
|
||||
|
||||
.stack : > RAMGS0 //stack - Local vars
|
||||
.stack : > RAMD0, TYPE = NOLOAD
|
||||
#if defined(__TI_EABI__)
|
||||
.bss : >> RAMGS0 | RAMGS1
|
||||
.bss:output : > RAMGS0
|
||||
.init_array : > RAMGS0
|
||||
.const : > RAMGS0
|
||||
.data : >> RAMGS0 | RAMGS1
|
||||
.sysmem : > RAMGS0
|
||||
.bss : > RAMGS3
|
||||
.bss:output : > RAMGS3
|
||||
.init_array : > RAMGS3
|
||||
.const : > RAMGS3
|
||||
.data : > RAMGS3
|
||||
.sysmem : > RAMGS3
|
||||
#else
|
||||
.pinit : > RAMGS0 //pinit - tables for global constructors (C++)
|
||||
.ebss : >> RAMGS0 //ebss - Global vars
|
||||
.econst : > RAMGS0
|
||||
.esysmem : > RAMGS0
|
||||
.pinit : > RAMGS3
|
||||
.ebss : > RAMGS3
|
||||
.econst : > RAMGS3
|
||||
.esysmem : > RAMGS3
|
||||
#endif
|
||||
|
||||
ramgs0 : > RAMGS0, type=NOINIT
|
||||
ramgs1 : > RAMGS1, type=NOINIT
|
||||
|
||||
MSGRAM_CPU1_TO_CPU2 > CPU1TOCPU2RAM, type=NOINIT
|
||||
MSGRAM_CPU1_TO_CPU2 > CPU1TOCPU2RAM0, type=NOINIT
|
||||
MSGRAM_CPU2_TO_CPU1 > CPU2TOCPU1RAM, type=NOINIT
|
||||
MSGRAM_CPU_TO_CM > CPUTOCMRAM, type=NOINIT
|
||||
MSGRAM_CPU_TO_CM > CPUTOCMRAM0, type=NOINIT
|
||||
MSGRAM_CM_TO_CPU > CMTOCPURAM, type=NOINIT
|
||||
|
||||
|
||||
|
||||
.TI.ramfunc : {} > RAMGS0
|
||||
.TI.ramfunc : {} > RAMGS3
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Arr.c
|
||||
*
|
||||
* Created on: 21 нояб. 2023 г.
|
||||
* Created on: 21 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
uint16_t quant16bitWords(uint16_t bytes)
|
||||
{
|
||||
if((bytes) & 1) return (bytes + 1)/2; //если осталось нечётное число байт, то чтобы рассчитать кол-во 16-битных слов надо +1
|
||||
if((bytes) & 1) return (bytes + 1)/2; //если осталось нечётное число байт, то чтобы рассчитать кол-во 16-битных слов надо +1
|
||||
else return (bytes)/2;
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Arr.h
|
||||
*
|
||||
* Created on: 21 íîÿá. 2023 ã.
|
||||
* Created on: 21 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* BL25CM1A.h
|
||||
*
|
||||
* Created on: 7 ñåíò. 2023 ã.
|
||||
* Created on: 7 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* GD25Q16ETIGR.h
|
||||
*
|
||||
* Created on: 7 ñåíò. 2023 ã.
|
||||
* Created on: 7 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,141 +0,0 @@
|
||||
/*
|
||||
* ZD24C02A.c
|
||||
*
|
||||
* Created on: 8 ñåíò. 2023 ã.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
#include "i2c_init.h"
|
||||
#include "ZD24C02A.h"
|
||||
#include "Arr.h"
|
||||
|
||||
|
||||
|
||||
volatile uint16_t SlaveAdr = I2C_SLAVE_ADDRESS;
|
||||
uint16_t BufferZD24C02A[17];
|
||||
|
||||
uint16_t ZD24C02A_write_8(uint16_t Addr, uint16_t * Array, uint16_t quant)// ìîæåò ïèñàòü î÷åðåäÿìè ïî 16 áàéò
|
||||
{
|
||||
if(I2CWrite(SlaveAdr, Addr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_read_8(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
|
||||
if(I2CWrite(SlaveAdr, Addr, 0, false, Array)) return 1;
|
||||
if(I2CRead(SlaveAdr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
uint16_t ZD24C02A_verify_8(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
uint16_t VerifyErr = 0;
|
||||
|
||||
if(I2CWrite(SlaveAdr, Addr, 0, false, BufferZD24C02A)) return 1;
|
||||
VerifyErr = I2CVerify(SlaveAdr, quant, true, Array);
|
||||
return VerifyErr;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[0x100];
|
||||
uint16_t quant16;
|
||||
|
||||
quant16 = quant16bitWords(quant8);
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
|
||||
for(i = 0; i < quant8; i += 1)
|
||||
{
|
||||
if( ZD24C02A_write_8(Addr+i, addr_write_data+i, 1)) return 1;
|
||||
}
|
||||
|
||||
/* if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
|
||||
copy16_to_8(write_data, addr_write_data, 4);
|
||||
if( ZD24C02A_write_8(Addr+i, addr_write_data, 8)) return 1;
|
||||
write_data += 4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//òóò ì.á. îò 1 äî 8 áàéò
|
||||
quant16 = quant16bitWords(quant8-i);
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
if( ZD24C02A_write_8(Addr+i, addr_write_data, (quant8 - i))) return 1;
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
|
||||
if( ZD24C02A_read_8(Addr+i, addr_read_data, 8)) return 1;
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//òóò ì.á. îò 1 äî 8 áàéò
|
||||
if( ZD24C02A_read_8(Addr+i, addr_read_data, (quant8 - i))) return 1;
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }//åñëè áàéò íå÷¸òíîå ÷èñëî, òî äîïîëíÿåì äî ÷¸òíîãî íóë¸ì
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t Err_read = 0;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
Err_read = ZD24C02A_verify_8(Addr+i, addr_vfy_data, 8);
|
||||
if(Err_read) return Err_read;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//òóò ì.á. îò 1 äî 8 áàéò
|
||||
quant16 = quant16bitWords(quant8-i);
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
Err_read = ZD24C02A_verify_8(Addr+i, addr_vfy_data, (quant8 - i));
|
||||
if(Err_read) return Err_read;
|
||||
}
|
||||
return 0;// 0 - DONE_SUCCESS ; 1 - FLASH_ERR; 2 - ERROR_VERIFY
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ZD24C02A_read_all(uint16_t byteCount, uint16_t * Array)
|
||||
{
|
||||
I2CRead(SlaveAdr, byteCount, true, Array);
|
||||
// I2CWriteRead(I2C_SLAVE_ADDRESS, byteCount, true, Array);
|
||||
// I2CWriteReadOnes(I2C_SLAVE_ADDRESS);
|
||||
}
|
||||
|
||||
|
||||
void ZD24C02A_test(uint16_t * Array)
|
||||
{
|
||||
uint16_t i=0;
|
||||
for(i=0;i<=255;i+=15)
|
||||
{
|
||||
// I2CWrite(SlaveAdr, 1, true, Array);
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
/*
|
||||
* ZD24C02A.h
|
||||
*
|
||||
* Created on: 8 ñåíò. 2023 ã.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
#ifndef SRC_ZD24C02A_H_
|
||||
#define SRC_ZD24C02A_H_
|
||||
|
||||
#define I2C_SLAVE_ADDRESS 0x51U
|
||||
#define I2C_OWN_ADDRESS 0x30U
|
||||
|
||||
#define ZD24C02A_SIZE 0x80
|
||||
|
||||
|
||||
uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant, uint16_t * write_data);
|
||||
uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant, uint16_t * read_data);
|
||||
void ZD24C02A_test(uint16_t * Array);
|
||||
void ZD24C02A_read_all(uint16_t byteCount, uint16_t * Array);
|
||||
uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant, uint16_t * verify_data);
|
||||
|
||||
#endif /* SRC_ZD24C02A_H_ */
|
||||
@ -0,0 +1,125 @@
|
||||
/*
|
||||
* ZD24C02A.c
|
||||
*
|
||||
* Created on: 8 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include <ZD24C02A_Control_Module.h>
|
||||
#include "f28x_project.h"
|
||||
#include "i2c_init.h"
|
||||
#include "Arr.h"
|
||||
|
||||
//Нуждается в проверке и отладке, так как с этой микросхемой не удалось добиться стабильной работы, она то работает, то нет
|
||||
|
||||
volatile uint16_t ControlModuleSlaveAdr = I2C_CONTROL_MODULE_SLAVE_ADDRESS;
|
||||
uint16_t BufferZD24C02A_ControlModule[17];
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_write_8(uint16_t Addr, uint16_t * Array, uint16_t quant)// может писать очередями по 16 байт
|
||||
{
|
||||
if(I2CWrite(ControlModuleSlaveAdr, Addr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_read_8(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
|
||||
if(I2CWrite(ControlModuleSlaveAdr, Addr, 0, false, Array)) return 1;
|
||||
if(I2CRead(ControlModuleSlaveAdr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_verify_16(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
uint16_t VerifyErr = 0;
|
||||
|
||||
if(I2CWrite(ControlModuleSlaveAdr, Addr, 0, false, BufferZD24C02A_ControlModule)) return 1;
|
||||
VerifyErr = I2CVerify(ControlModuleSlaveAdr, quant, true, Array);
|
||||
return VerifyErr;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[0x100];
|
||||
uint16_t quant16;
|
||||
|
||||
quant16 = quant16bitWords(quant8);
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
|
||||
for(i = 0; i < quant8; i += 1)
|
||||
{
|
||||
if( ZD24C02A_ControlModule_write_8(Addr+i, addr_write_data+i, 1)) return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//в этом цикле только полные посылки по 8 байт
|
||||
if( ZD24C02A_ControlModule_read_8(Addr+i, addr_read_data, 8)) return 1;
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//тут м.б. от 1 до 8 байт
|
||||
if( ZD24C02A_ControlModule_read_8(Addr+i, addr_read_data, (quant8 - i))) return 1;
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }//если байт нечётное число, то дополняем до чётного нулём
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t Err_read = 0;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//в этом цикле только полные посылки по 8 байт
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
Err_read = ZD24C02A_ControlModule_verify_16(Addr+i, addr_vfy_data, 8);
|
||||
if(Err_read) return Err_read;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//тут м.б. от 1 до 8 байт
|
||||
quant16 = quant16bitWords(quant8-i);
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
Err_read = ZD24C02A_ControlModule_verify_16(Addr+i, addr_vfy_data, (quant8 - i));
|
||||
if(Err_read) return Err_read;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ZD24C02A_ControlModule_read_all(uint16_t byteCount, uint16_t * Array)
|
||||
{
|
||||
I2CRead(ControlModuleSlaveAdr, byteCount, true, Array);
|
||||
// I2CWriteRead(I2C_SLAVE_ADDRESS, byteCount, true, Array);
|
||||
// I2CWriteReadOnes(I2C_SLAVE_ADDRESS);
|
||||
}
|
||||
|
||||
|
||||
void ZD24C02A_ControlModule_test(uint16_t * Array)
|
||||
{
|
||||
uint16_t i=0;
|
||||
for(i=0;i<=255;i+=15)
|
||||
{
|
||||
// I2CWrite(SlaveAdr, 1, true, Array);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* ZD24C02A.h
|
||||
*
|
||||
* Created on: 8 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
#ifndef SRC_ZD24C02A_CONTROL_MODULE_H_
|
||||
#define SRC_ZD24C02A_CONTROL_MODULE_H_
|
||||
|
||||
#define I2C_CONTROL_MODULE_SLAVE_ADDRESS 0x51U
|
||||
|
||||
|
||||
#define ZD24C02A_CONTROL_MODULE_SIZE 0x80
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
uint16_t ZD24C02A_ControlModule_write(uint32_t Addr, uint16_t quant, uint16_t * write_data);
|
||||
uint16_t ZD24C02A_ControlModule_read(uint32_t Addr, uint16_t quant, uint16_t * read_data);
|
||||
void ZD24C02A_ControlModule_test(uint16_t * Array);
|
||||
void ZD24C02A_ControlModule_read_all(uint16_t byteCount, uint16_t * Array);
|
||||
uint16_t ZD24C02A_ControlModule_verify(uint32_t Addr, uint16_t quant, uint16_t * verify_data);
|
||||
|
||||
#endif /* SRC_ZD24C02A_CONTROL_MODULE_H_ */
|
||||
@ -0,0 +1,125 @@
|
||||
/*
|
||||
* ZD24C02A.c
|
||||
*
|
||||
* Created on: 8 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include <ZD24C02A_Power_Module.h>
|
||||
#include "f28x_project.h"
|
||||
#include "i2c_init.h"
|
||||
#include "Arr.h"
|
||||
|
||||
//Нуждается в проверке и отладке, так как с этой микросхемой не удалось добиться стабильной работы, она то работает, то нет
|
||||
|
||||
volatile uint16_t PowerModuleSlaveAdr = I2C_POWER_MODULE_SLAVE_ADDRESS;
|
||||
uint16_t BufferZD24C02A_PowerModule[17];
|
||||
|
||||
uint16_t ZD24C02A_Power_Module_write_8(uint16_t Addr, uint16_t * Array, uint16_t quant)// может писать очередями по 16 байт
|
||||
{
|
||||
if(I2CWrite(PowerModuleSlaveAdr, Addr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_read_8(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
|
||||
if(I2CWrite(PowerModuleSlaveAdr, Addr, 0, false, Array)) return 1;
|
||||
if(I2CRead(PowerModuleSlaveAdr, quant, true, Array)) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_verify_16(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
{
|
||||
uint16_t VerifyErr = 0;
|
||||
|
||||
if(I2CWrite(PowerModuleSlaveAdr, Addr, 0, false, BufferZD24C02A_PowerModule)) return 1;
|
||||
VerifyErr = I2CVerify(PowerModuleSlaveAdr, quant, true, Array);
|
||||
return VerifyErr;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[0x100];
|
||||
uint16_t quant16;
|
||||
|
||||
quant16 = quant16bitWords(quant8);
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
|
||||
for(i = 0; i < quant8; i += 1)
|
||||
{
|
||||
if( ZD24C02A_Power_Module_write_8(Addr+i, addr_write_data+i, 1)) return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//в этом цикле только полные посылки по 8 байт
|
||||
if( ZD24C02A_PowerModule_read_8(Addr+i, addr_read_data, 8)) return 1;
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//тут м.б. от 1 до 8 байт
|
||||
if( ZD24C02A_PowerModule_read_8(Addr+i, addr_read_data, (quant8 - i))) return 1;
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }//если байт нечётное число, то дополняем до чётного нулём
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t Err_read = 0;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{//в этом цикле только полные посылки по 8 байт
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
Err_read = ZD24C02A_PowerModule_verify_16(Addr+i, addr_vfy_data, 8);
|
||||
if(Err_read) return Err_read;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant8)
|
||||
{//тут м.б. от 1 до 8 байт
|
||||
quant16 = quant16bitWords(quant8-i);
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
Err_read = ZD24C02A_PowerModule_verify_16(Addr+i, addr_vfy_data, (quant8 - i));
|
||||
if(Err_read) return Err_read;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ZD24C02A_PowerModule_read_all(uint16_t byteCount, uint16_t * Array)
|
||||
{
|
||||
I2CRead(PowerModuleSlaveAdr, byteCount, true, Array);
|
||||
// I2CWriteRead(I2C_SLAVE_ADDRESS, byteCount, true, Array);
|
||||
// I2CWriteReadOnes(I2C_SLAVE_ADDRESS);
|
||||
}
|
||||
|
||||
|
||||
void ZD24C02A_PowerModule_test(uint16_t * Array)
|
||||
{
|
||||
uint16_t i=0;
|
||||
for(i=0;i<=255;i+=15)
|
||||
{
|
||||
// I2CWrite(SlaveAdr, 1, true, Array);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* ZD24C02A.h
|
||||
*
|
||||
* Created on: 8 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
#ifndef SRC_ZD24C02A_POWER_MODULE_H_
|
||||
#define SRC_ZD24C02A_POWER_MODULE_H_
|
||||
|
||||
#define I2C_POWER_MODULE_SLAVE_ADDRESS 0x50U
|
||||
|
||||
#define ZD24C02A_POWER_MODULE_SIZE 0x80
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
uint16_t ZD24C02A_PowerModule_write(uint32_t Addr, uint16_t quant, uint16_t * write_data);
|
||||
uint16_t ZD24C02A_PowerModule_read(uint32_t Addr, uint16_t quant, uint16_t * read_data);
|
||||
void ZD24C02A_PowerModule_test(uint16_t * Array);
|
||||
void ZD24C02A_PowerModule_read_all(uint16_t byteCount, uint16_t * Array);
|
||||
uint16_t ZD24C02A_PowerModule_verify(uint32_t Addr, uint16_t quant, uint16_t * verify_data);
|
||||
|
||||
#endif /* SRC_ZD24C02A_POWER_MODULE_H_ */
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* emif_init.c
|
||||
*
|
||||
* Created on: 20 íîÿá. 2023 ã.
|
||||
* Created on: 20 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* emif_init.h
|
||||
*
|
||||
* Created on: 20 íîÿá. 2023 ã.
|
||||
* Created on: 20 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* gpio_init.h
|
||||
*
|
||||
* Created on: 4 ñåíò. 2023 ã.
|
||||
* Created on: 4 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* i2c_init.c
|
||||
*
|
||||
* Created on: 5 ñåíò. 2023 ã.
|
||||
* Created on: 5 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* i2c_init.h
|
||||
*
|
||||
* Created on: 5 ñåíò. 2023 ã.
|
||||
* Created on: 5 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* internal_flash.c
|
||||
*
|
||||
* Created on: 9 íîÿá. 2023 ã.
|
||||
* Created on: 9 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* internal_flash.h
|
||||
*
|
||||
* Created on: 9 íîÿá. 2023 ã.
|
||||
* Created on: 9 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -265,10 +265,10 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
IPC_Message_t Buffer[IPC_NUM_OF_INTERRUPTS][IPC_BUFFER_SIZE];//IPC_Message_t = 32*4=128 (8*16) 8 ñëîâ * 16 = 128 ñëîâ 0x80
|
||||
IPC_Message_t Buffer[IPC_NUM_OF_INTERRUPTS][IPC_BUFFER_SIZE];//IPC_Message_t = 32*4=128 (8*16) 8 слов * 16 = 128 слов 0x80
|
||||
uint16_t PutWriteIndex[IPC_NUM_OF_INTERRUPTS];
|
||||
uint16_t GetReadIndex[IPC_NUM_OF_INTERRUPTS];
|
||||
}IPC_PutBuffer_t; //128 + 4 + 4 = 136 = 0x88 ñëîâ
|
||||
}IPC_PutBuffer_t; //128 + 4 + 4 = 136 = 0x88 слов
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@ -15,7 +15,8 @@
|
||||
#include "flash_programming_f2838x_c28x.h"
|
||||
#include "internal_flash.h"
|
||||
#ifdef CPU1
|
||||
#include "ZD24C02A.h"
|
||||
#include <ZD24C02A_Control_Module.h>
|
||||
#include <ZD24C02A_Power_Module.h>
|
||||
#include "BL25CM1A.h"
|
||||
#include "GD25Q16ETIGR.h"
|
||||
#include "emif_init.h"
|
||||
@ -43,7 +44,9 @@
|
||||
#define EMIF 0xA1
|
||||
#define BL25CM1A_1M_bit_SPI 0xA2
|
||||
#define GD25Q16E_16M_bit_SPI 0xA3
|
||||
#define ZD24C02A_2K_I2C 0xA4
|
||||
#define ZD24C02A_2K_I2C__CONTROL_MODULE 0xA4
|
||||
#define ZD24C02A_2K_I2C__POWER_MODULE 0xA5
|
||||
#define FLASH_OTP 0xA6
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@ -115,6 +118,47 @@ void clear_BlockWasErased(void)
|
||||
//#define Internal_flash_Program Internal_flash_Program_DataOnlyECCOnly
|
||||
#define Internal_flash_Program Internal_flash_Program_AutoECC
|
||||
|
||||
static const uint32_t FLASH_OTP_START_ADDRESS = 0x00078008;
|
||||
static const uint32_t FLASH_OTP_MAX_SIZE_IN_BYTES = 0x10;
|
||||
static const uint32_t IPC_MESSAGE_MEMORY_SIZE_IN_BYTES = 2048;
|
||||
|
||||
void getMessage_from_Cm_Flash_OTP(void){
|
||||
if((InData & 1)||(InAddr & 1)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, FLASH_OTP, 0, 0); return;}
|
||||
|
||||
InData /= 2;
|
||||
InAddr /= 2;
|
||||
if((InData > IPC_MESSAGE_MEMORY_SIZE_IN_BYTES)||(InData > FLASH_OTP_MAX_SIZE_IN_BYTES)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, FLASH_OTP, 0, 0); return;}
|
||||
if((InAddr+InData) > FLASH_OTP_START_ADDRESS) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, FLASH_OTP, 0, 0); return;}
|
||||
|
||||
uint32_t FactAddressFlash = InAddr + FLASH_OTP_START_ADDRESS;
|
||||
|
||||
uint16_t MemOperationError = 0;
|
||||
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
putFlashMessage_to_Cm(FactAddressFlash, InData);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, FLASH_OTP, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
MemOperationError = Internal_flash_Program(FactAddressFlash, InData);
|
||||
if(MemOperationError) {IPC_sendCommand(IPC_CPU1_L_CM_R, MemOperationError, FLASH_OTP, 0, 0); return;}
|
||||
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, FLASH_OTP, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = verifyFlashMessage_to_Cm(FactAddressFlash, InData);
|
||||
if(MemOperationError) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, INT_FLASH, MemOperationError, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, FLASH_OTP, 0, 0);
|
||||
break;
|
||||
case END:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, FLASH_OTP, 0, 0);
|
||||
break;
|
||||
default:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_COMMAND, FLASH_OTP, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void getMessage_from_Cm_Flash(void)
|
||||
{
|
||||
@ -188,7 +232,7 @@ void getMessage_from_Cm_Flash(void)
|
||||
#ifdef CPU1
|
||||
void getMessage_from_Cm_EMIF(void)
|
||||
{
|
||||
// uint16_t MemOperationError = 0;
|
||||
uint16_t MemOperationError = 0;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, EMIF, 0, 0); return;}
|
||||
if((InAddr+InData) > 0x100000*2) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, EMIF, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, EMIF, 0, 0);
|
||||
@ -217,7 +261,7 @@ void getMessage_from_Cm_BL25CM1A(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
if((InData > 2048*2)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
if( ((InAddr+InData) > (BL25CM1A0_SIZE*2))||((InAddr) > (BL25CM1A0_SIZE*2)) ){IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
if( ((InAddr+InData) > (BL25CM1A0_SIZE*2))||((InAddr) > (BL25CM1A0_SIZE*2)) ) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
|
||||
spi_TurnOffCS1_GD25Q16E();
|
||||
@ -248,7 +292,6 @@ void getMessage_from_Cm_BL25CM1A(void)
|
||||
void getMessage_from_Cm_GD25Q16E(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
|
||||
uint32_t EndOfAdr = (InAddr+InData);
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
if( (EndOfAdr > (GD25Q16E_SIZE*2)) || (InAddr > (GD25Q16E_SIZE*2)) ) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
@ -285,37 +328,72 @@ void getMessage_from_Cm_GD25Q16E(void)
|
||||
spi_TurnOffCS1_GD25Q16E();
|
||||
}
|
||||
|
||||
void getMessage_from_Cm_ZD24C02A(void)
|
||||
void getMessage_from_Cm_ZD24C02A_CONTROL_MODULE(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
uint16_t I2CErr = 0;
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
if((InAddr+InData) > (ZD24C02A_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0);
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0); return;}
|
||||
if((InAddr+InData) > (ZD24C02A_CONTROL_MODULE_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
I2CErr = ZD24C02A_read(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
I2CErr = ZD24C02A_ControlModule_read(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
I2CErr = ZD24C02A_write(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
I2CErr = ZD24C02A_ControlModule_write(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = ZD24C02A_verify(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError == 2) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, ZD24C02A_2K_I2C, 0, 0);
|
||||
else if(MemOperationError == 1) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
MemOperationError = ZD24C02A_ControlModule_verify(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError == 2) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
else if(MemOperationError == 1) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
break;
|
||||
case END:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
break;
|
||||
default:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_COMMAND, ZD24C02A_2K_I2C, 0, 0);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_COMMAND, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void getMessage_from_Cm_ZD24C02A_POWER_MODULE(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
uint16_t I2CErr = 0;
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0); return;}
|
||||
if((InAddr+InData) > (ZD24C02A_POWER_MODULE_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
I2CErr = ZD24C02A_PowerModule_read(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
I2CErr = ZD24C02A_PowerModule_write(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = ZD24C02A_PowerModule_verify(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError == 2) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
else if(MemOperationError == 1) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
break;
|
||||
case END:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
break;
|
||||
default:
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_COMMAND, ZD24C02A_2K_I2C__POWER_MODULE, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -326,7 +404,7 @@ __interrupt void IPC_ISR0()
|
||||
IPC_ackFlagRtoL(IPC_CPU1_L_CM_R, (1<<0));
|
||||
PieCtrlRegs.PIEACK.all = PIEACK_GROUP11;
|
||||
if(ReadFromCm == 0) ReadFromCm = 1;
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, BUSY, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, BUSY, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -387,8 +465,13 @@ void ipc_run(void)
|
||||
#ifdef CPU1
|
||||
if((InCommand >> 16) == RESET_NOW)
|
||||
{
|
||||
// CpuSysRegs.SIMRESET.all = 0xA5A50002;//bit.XRSn
|
||||
// EALLOW;
|
||||
// CmConfRegs.CMRESCTL.all = SYSCTL_CMRESCTL_RESET | SYSCTL_REG_KEY;//.bit.RESETSTS = 1;
|
||||
// DevCfgRegs.CPU2RESCTL.all = ((uint32_t)SYSCTL_CPU2RESCTL_RESET |(SYSCTL_REG_KEY & SYSCTL_CPU2RESCTL_KEY_M)); //.bit.RESET = 1;
|
||||
// EDIS;
|
||||
CpuSysRegs.SIMRESET.all = ((uint32_t)SYSCTL_REG_KEY | (uint32_t)1);//программный сброс всех контроллеров
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C__CONTROL_MODULE, 0, 0);
|
||||
IPC_setFlagLtoR(IPC_CPU1_L_CM_R,(1<<0));
|
||||
ReadFromCm = 0;
|
||||
return;
|
||||
@ -400,6 +483,9 @@ void ipc_run(void)
|
||||
getMessage_from_Cm_Flash();
|
||||
break;
|
||||
#ifdef CPU1
|
||||
case FLASH_OTP:
|
||||
getMessage_from_Cm_Flash_OTP();
|
||||
break;
|
||||
case EMIF:
|
||||
getMessage_from_Cm_EMIF();
|
||||
break;
|
||||
@ -409,8 +495,11 @@ void ipc_run(void)
|
||||
case GD25Q16E_16M_bit_SPI:
|
||||
getMessage_from_Cm_GD25Q16E();
|
||||
break;
|
||||
case ZD24C02A_2K_I2C:
|
||||
getMessage_from_Cm_ZD24C02A();
|
||||
case ZD24C02A_2K_I2C__CONTROL_MODULE:
|
||||
getMessage_from_Cm_ZD24C02A_CONTROL_MODULE();
|
||||
break;
|
||||
case ZD24C02A_2K_I2C__POWER_MODULE:
|
||||
getMessage_from_Cm_ZD24C02A_POWER_MODULE();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@ -422,3 +511,4 @@ void ipc_run(void)
|
||||
ReadFromCm = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* ipc_init.h
|
||||
*
|
||||
* Created on: 7 íîÿá. 2023 ã.
|
||||
* Created on: 7 нояб. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* init.c
|
||||
*
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
@ -175,7 +175,7 @@ void PWMInit(uint16_t Num, uint16_t Period, uint16_t Independed)
|
||||
|
||||
|
||||
EPwmRegs[Num]->TZFRC.all = 4;
|
||||
EDIS; //Программно выставляем TZ-событие
|
||||
EDIS; //Программно выставляем TZ-событие
|
||||
//
|
||||
// Set actions
|
||||
//
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* pwm_init.h
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* interrupts.c
|
||||
*
|
||||
* Created on: 21 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
@ -21,7 +21,7 @@ volatile uint16_t PWM_out = 2500;
|
||||
uint16_t Fault = 0, Fault_fix = 0, Ready = 0, Ready_Fix = 0;
|
||||
uint16_t counter1s=0;
|
||||
uint16_t FaultABC = 0, FaultABCFix = 0;
|
||||
uint16_t PwmFlagStartCurrentMeashure = 0;
|
||||
uint16_t PwmFlagStartADC = 0;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* pwm_interrupts.h
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
|
||||
//в новой версии платы CS для BL25CM1A переехал на GPIO127 (в старой версии был на GPIO98)
|
||||
|
||||
#define SPI_PROGRAM_CS_GPAMUX GpioCtrlRegs.GPDMUX2.bit.GPIO127
|
||||
#define SPI_PROGRAM_CS_GPAGMUX GpioCtrlRegs.GPDGMUX2.bit.GPIO127
|
||||
#define SPI_PROGRAM_CS_GPAMUX1 GpioCtrlRegs.GPDMUX2.bit.GPIO127
|
||||
#define SPI_PROGRAM_CS_GPAGMUX1 GpioCtrlRegs.GPDGMUX2.bit.GPIO127
|
||||
#define SPI_PROGRAM_CS_GPADIR GpioCtrlRegs.GPDDIR.bit.GPIO127
|
||||
#define SPI_PROGRAM_CS_GPADAT GpioDataRegs.GPDDAT.bit.GPIO127
|
||||
|
||||
@ -121,8 +121,8 @@ void SpiAGpioInit(void)
|
||||
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // Configure GPIO35 as SPISTEA
|
||||
|
||||
|
||||
SPI_PROGRAM_CS_GPAMUX = 0;//program CS for BL25CM1A
|
||||
SPI_PROGRAM_CS_GPAGMUX = 0;
|
||||
SPI_PROGRAM_CS_GPAMUX1 = 0;//program CS for BL25CM1A
|
||||
SPI_PROGRAM_CS_GPAGMUX1 = 0;
|
||||
SPI_PROGRAM_CS_GPADIR = 1;
|
||||
SPI_PROGRAM_CS_GPADAT = 0;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* spi_init.h
|
||||
*
|
||||
* Created on: 5 ñåíò. 2023 ã.
|
||||
* Created on: 5 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* frm_uart.c
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* frm_uart.h
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* frmmstr_run.c
|
||||
*
|
||||
* Created on: 14 ñåíò. 2023 ã.
|
||||
* Created on: 14 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* frmmstr_run.h
|
||||
*
|
||||
* Created on: 14 ñåíò. 2023 ã.
|
||||
* Created on: 14 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* init_perif.c
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
#include "f28x_project.h"
|
||||
@ -14,14 +14,13 @@
|
||||
#include "i2c_init.h"
|
||||
#include "frm_uart.h"
|
||||
#include "GD25Q16ETIGR.h"
|
||||
#include "ZD24C02A.h"
|
||||
#include <ZD24C02A_Control_Module.h>
|
||||
#include "BL25CM1A.h"
|
||||
#include "pwm_init.h"
|
||||
#include "emif_init.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define I2C_OWN_ADDRESS 0x30U
|
||||
|
||||
void InitPerif(void)
|
||||
{
|
||||
@ -65,7 +64,7 @@ void InitPerif(void)
|
||||
GpioInit();
|
||||
Gpio_SPI_CS_BL25CM1A(1);
|
||||
SpiInit();
|
||||
I2CMasterInit(I2C_OWN_ADDRESS,I2C_SLAVE_ADDRESS);
|
||||
I2CMasterInit(I2C_OWN_ADDRESS,I2C_CONTROL_MODULE_SLAVE_ADDRESS);
|
||||
#endif
|
||||
//
|
||||
// Enable global Interrupts and higher priority real-time debug events:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* init_perif.h
|
||||
*
|
||||
* Created on: 21 àâã. 2023 ã.
|
||||
* Created on: 21 авг. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* timer_base.c
|
||||
*
|
||||
* Created on: 11 ñåíò. 2023 ã.
|
||||
* Created on: 11 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* timer_base.h
|
||||
*
|
||||
* Created on: 11 ñåíò. 2023 ã.
|
||||
* Created on: 11 сент. 2023 г.
|
||||
* Author: seklyuts
|
||||
*/
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user