From 1c8e06634c9153d0f9b449f1378c5d79f2b0fa57 Mon Sep 17 00:00:00 2001 From: KlassenTS Date: Mon, 28 Apr 2025 07:06:08 +0300 Subject: [PATCH] v0.5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - добавлена поддержка платы ELBEAR ACE-NANO; - добавлена поддержка плат ELSOMIK OEM и SE; - добавлена возможность работы в режиме отладки для всех плат, входящих в состав пакета. Доступно для версии ArduinoIDE 2 и выше; - добавлена поддержка библиотеки FreeRTOS; - добавлена поддержка библиотеки IRremote; - добавлена поддержка библиотеки OneWire; - добавлена поддержка аппаратного I2C0 для плат START-MIK32 и ELSOMIK. Для работы с ним доступен экземпляр класса Wire1; - добавлена поддержка аппаратного SPI0 для всех плат, входящих в пакет. Для работы с ним доступен экземпляр класса SPI1; - увеличено быстродействие функций digitalWrite, digitalRead; - исправлены известные ошибки. Co-authored-by: KlassenTS Co-committed-by: KlassenTS --- README.md | 22 +- boards.txt | 70 +- .../{ace-uno => elbear}/bootloader.hex | 0 bootloaders/elsomik/bootloader.hex | 261 + cores/arduino/Tone.cpp | 12 + cores/arduino/main.cpp | 6 + .../hal/peripherals/Include/mik32_hal_gpio.h | 1 + .../mik32/shared/ldscripts/spifi_cpp.ld | 1 + cores/arduino/mik32/shared/svd/mik32v2.svd | 23943 ++++++++++++++++ cores/arduino/trap_handler.c | 30 +- cores/arduino/wiring_analog.c | 4 +- cores/arduino/wiring_digital.c | 56 +- cores/arduino/wiring_digital.h | 21 +- docs/Elbear_description.md | 20 +- docs/Pinout_nano.PNG | Bin 0 -> 1076020 bytes docs/Registers.png | Bin 0 -> 103932 bytes docs/Start_mik32_description.md | 7 +- docs/debug_console.PNG | Bin 0 -> 122849 bytes docs/debug_description.md | 45 + docs/debug_panel.PNG | Bin 0 -> 58553 bytes docs/debug_start.PNG | Bin 0 -> 44224 bytes docs/elsomikOEM_pinout.png | Bin 0 -> 172392 bytes docs/elsomikSE_pinout.png | Bin 0 -> 179504 bytes docs/elsomik_description.md | 90 + docs/nano_description.md | 48 + docs/pinout.PNG | Bin 238851 -> 0 bytes docs/uno_pinout.png | Bin 0 -> 2370015 bytes libraries/FreeRTOS/CODE_OF_CONDUCT.md | 76 + libraries/FreeRTOS/LICENSE | 20 + .../AnalogRead_DigitalRead.ino | 120 + .../examples/ArrayQueue/ArrayQueue.ino | 162 + .../Blink_AnalogRead/Blink_AnalogRead.ino | 95 + .../examples/IntegerQueue/IntegerQueue.ino | 135 + .../examples/Interrupts/Interrupts.ino | 90 + libraries/FreeRTOS/examples/Mutex/Mutex.ino | 80 + .../examples/Notifications/Notifications.ino | 61 + .../examples/StructArray/StructArray.ino | 149 + .../examples/StructQueue/StructQueue.ino | 183 + .../examples/TaskStatus/TaskStatus.ino | 89 + .../examples/TaskUtilities/TaskUtilities.ino | 155 + libraries/FreeRTOS/keywords.txt | 60 + libraries/FreeRTOS/library.properties | 11 + libraries/FreeRTOS/readme.md | 126 + libraries/FreeRTOS/src/Arduino_FreeRTOS.h | 3326 +++ libraries/FreeRTOS/src/FreeRTOSConfig.h | 124 + libraries/FreeRTOS/src/FreeRTOSVariant.h | 57 + libraries/FreeRTOS/src/LICENSE.md | 19 + libraries/FreeRTOS/src/event_groups.c | 884 + libraries/FreeRTOS/src/event_groups.h | 857 + ...freertos_risc_v_chip_specific_extensions.h | 69 + libraries/FreeRTOS/src/heap_1.c | 165 + libraries/FreeRTOS/src/list.c | 245 + libraries/FreeRTOS/src/list.h | 511 + libraries/FreeRTOS/src/message_buffer.h | 967 + libraries/FreeRTOS/src/mpu_wrappers.h | 289 + libraries/FreeRTOS/src/port.c | 204 + libraries/FreeRTOS/src/portASM.S | 385 + libraries/FreeRTOS/src/portContext.h | 192 + libraries/FreeRTOS/src/portable.h | 295 + libraries/FreeRTOS/src/portmacro.h | 206 + libraries/FreeRTOS/src/projdefs.h | 138 + libraries/FreeRTOS/src/queue.c | 3054 ++ libraries/FreeRTOS/src/queue.h | 1784 ++ libraries/FreeRTOS/src/semphr.h | 1215 + libraries/FreeRTOS/src/stack_macros.h | 141 + libraries/FreeRTOS/src/stream_buffer.c | 1719 ++ libraries/FreeRTOS/src/stream_buffer.h | 1280 + libraries/FreeRTOS/src/task.h | 3745 +++ libraries/FreeRTOS/src/tasks.c | 8693 ++++++ libraries/FreeRTOS/src/timers.c | 1336 + libraries/FreeRTOS/src/timers.h | 1430 + libraries/FreeRTOS/src/variantHooks.cpp | 216 + libraries/IRremote/Contributing.md | 47 + libraries/IRremote/Contributors.md | 36 + libraries/IRremote/Doxyfile | 2500 ++ libraries/IRremote/LICENSE | 25 + libraries/IRremote/README.md | 1097 + libraries/IRremote/changelog.md | 401 + .../examples/ControlRelay/ControlRelay.ino | 100 + .../ControlRelay/PinDefinitionsAndMore.h | 349 + .../IRDispatcherDemo/DemoIRCommandMapping.h | 193 + .../IRDispatcherDemo/IRCommandDispatcher.h | 138 + .../IRDispatcherDemo/IRCommandDispatcher.hpp | 366 + .../IRDispatcherDemo/IRDispatcherDemo.ino | 249 + .../IRDispatcherDemo/PinDefinitionsAndMore.h | 349 + .../IRremoteExtensionClass.cpp | 63 + .../IRremoteExtensionClass.h | 46 + .../IRremoteExtensionTest.ino | 80 + .../PinDefinitionsAndMore.h | 349 + .../examples/IRremoteInfo/IRremoteInfo.ino | 244 + .../ReceiveAndSend/PinDefinitionsAndMore.h | 349 + .../ReceiveAndSend/ReceiveAndSend.ino | 248 + .../PinDefinitionsAndMore.h | 349 + .../ReceiveAndSendDistanceWidth.ino | 191 + .../IRremote_SendDemo_ReceiveDemo.log | 178 + .../ReceiveDemo/PinDefinitionsAndMore.h | 349 + .../examples/ReceiveDemo/ReceiveDemo.ino | 230 + .../ReceiveDump/PinDefinitionsAndMore.h | 349 + .../examples/ReceiveDump/ReceiveDump.ino | 161 + .../examples/ReceiveDump/ReceiveDump.log | 52 + .../PinDefinitionsAndMore.h | 349 + .../ReceiveOneAndSendMultiple.ino | 264 + .../ReceiverTimingAnalysis.ino | 210 + .../SendAndReceive/PinDefinitionsAndMore.h | 349 + .../SendAndReceive/SendAndReceive.ino | 166 + .../SendAndReceive/SendAndReceive.log | 39 + .../SendBoseWaveDemo/PinDefinitionsAndMore.h | 349 + .../SendBoseWaveDemo/SendBoseWaveDemo.ino | 217 + .../IRremote_SendDemo_ReceiveDemo.log | 178 + .../examples/SendDemo/PinDefinitionsAndMore.h | 349 + .../IRremote/examples/SendDemo/SendDemo.ino | 424 + .../PinDefinitionsAndMore.h | 349 + .../SendLGAirConditionerDemo/Readme.md | 93 + .../SendLGAirConditionerDemo.ino | 153 + .../SendProntoDemo/PinDefinitionsAndMore.h | 349 + .../SendProntoDemo/SendProntoDemo.ino | 100 + .../SendRawDemo/PinDefinitionsAndMore.h | 349 + .../examples/SendRawDemo/SendRawDemo.ino | 124 + .../SimpleReceiver/PinDefinitionsAndMore.h | 349 + .../SimpleReceiver/SimpleReceiver.ino | 131 + .../PinDefinitionsAndMore.h | 349 + .../SimpleReceiverForHashCodes.ino | 100 + .../PinDefinitionsAndMore.h | 349 + .../SimpleReceiverWithCallback.ino | 165 + .../SimpleSender/PinDefinitionsAndMore.h | 349 + .../examples/SimpleSender/SimpleSender.ino | 91 + .../TinyReceiver/PinDefinitionsAndMore.h | 349 + .../examples/TinyReceiver/TinyReceiver.ino | 147 + .../TinySender/PinDefinitionsAndMore.h | 349 + .../examples/TinySender/TinySender.ino | 138 + .../examples/UnitTest/PinDefinitionsAndMore.h | 349 + .../IRremote/examples/UnitTest/UnitTest.ino | 790 + .../IRremote/examples/UnitTest/UnitTest.log | 851 + .../examples/UnitTest/UnitTest_64bit.log | 825 + libraries/IRremote/keywords.txt | 104 + libraries/IRremote/library.json | 30 + libraries/IRremote/library.properties | 10 + .../IRremote/pictures/BoseWaveMusicSystem.jpg | Bin 0 -> 60458 bytes .../pictures/BoseWaveSoundTouch_IV.jpg | Bin 0 -> 152295 bytes .../IRremote/pictures/IRReceiverPinout.jpg | Bin 0 -> 36852 bytes .../pictures/IR_PWM_by_software_detail.png | Bin 0 -> 20096 bytes .../pictures/IR_PWM_by_software_jitter.png | Bin 0 -> 24065 bytes libraries/IRremote/pictures/IR_RobotCar.jpg | Bin 0 -> 163679 bytes .../IRremote/pictures/IR_UnitTest_delay.bmp | Bin 0 -> 1200054 bytes libraries/IRremote/pictures/LGRemote1.jpg | Bin 0 -> 12271 bytes .../IRremote/pictures/LG_AKB73315611.jpg | Bin 0 -> 54012 bytes .../IRremote/pictures/LG_AKB75415316.jpg | Bin 0 -> 343580 bytes .../pictures/SloeberDefineSymbols.png | Bin 0 -> 24761 bytes libraries/IRremote/src/IRFeedbackLED.hpp | 159 + libraries/IRremote/src/IRProtocol.h | 182 + libraries/IRremote/src/IRProtocol.hpp | 290 + libraries/IRremote/src/IRReceive.hpp | 1977 ++ libraries/IRremote/src/IRSend.hpp | 1255 + libraries/IRremote/src/IRVersion.h | 51 + libraries/IRremote/src/IRremote.h | 58 + libraries/IRremote/src/IRremote.hpp | 321 + libraries/IRremote/src/IRremoteInt.h | 665 + libraries/IRremote/src/LongUnion.h | 153 + libraries/IRremote/src/TinyIR.h | 287 + libraries/IRremote/src/TinyIRReceiver.hpp | 713 + libraries/IRremote/src/TinyIRSender.hpp | 347 + libraries/IRremote/src/ac_LG.h | 138 + libraries/IRremote/src/ac_LG.hpp | 322 + libraries/IRremote/src/digitalWriteFast.h | 431 + libraries/IRremote/src/ir_BangOlufsen.hpp | 496 + libraries/IRremote/src/ir_BoseWave.hpp | 123 + libraries/IRremote/src/ir_Denon.hpp | 313 + .../IRremote/src/ir_DistanceWidthProtocol.hpp | 482 + libraries/IRremote/src/ir_FAST.hpp | 155 + libraries/IRremote/src/ir_JVC.hpp | 260 + libraries/IRremote/src/ir_Kaseikyo.hpp | 322 + libraries/IRremote/src/ir_LG.hpp | 349 + libraries/IRremote/src/ir_Lego.hpp | 210 + libraries/IRremote/src/ir_MagiQuest.hpp | 251 + libraries/IRremote/src/ir_NEC.hpp | 441 + libraries/IRremote/src/ir_Others.hpp | 113 + libraries/IRremote/src/ir_Pronto.hpp | 344 + libraries/IRremote/src/ir_RC5_RC6.hpp | 670 + libraries/IRremote/src/ir_Samsung.hpp | 429 + libraries/IRremote/src/ir_Sony.hpp | 235 + libraries/IRremote/src/ir_Template.hpp | 175 + libraries/IRremote/src/private/IRTimer.hpp | 2183 ++ libraries/NeoPixel/src/NeoPixel.cpp | 103 +- libraries/OneWire/OneWire.cpp | 603 + libraries/OneWire/OneWire.h | 182 + libraries/OneWire/docs/issue_template.md | 64 + .../DS18x20_Temperature.ino | 112 + .../examples/DS2408_Switch/DS2408_Switch.ino | 74 + .../examples/DS250x_PROM/DS250x_PROM.ino | 75 + libraries/OneWire/keywords.txt | 38 + libraries/OneWire/library.json | 61 + libraries/OneWire/library.properties | 10 + libraries/OneWire/util/OneWire_direct_gpio.h | 532 + .../OneWire/util/OneWire_direct_regtype.h | 62 + .../ADC_read_write_registers.ino | 4 +- libraries/SPI/src/SPI.cpp | 171 +- libraries/SPI/src/SPI.h | 57 +- .../SoftwareSerial/src/SoftwareSerial.cpp | 12 + libraries/Wire/src/Wire.cpp | 53 +- libraries/Wire/src/Wire.h | 57 +- libraries/Wire/src/utility/twi.c | 287 +- libraries/Wire/src/utility/twi.h | 31 +- platform.txt | 52 +- variants/elbear_ace_nano/pins_arduino.h | 169 + variants/elbear_ace_nano/variant.c | 401 + variants/elbear_ace_uno/pins_arduino.h | 59 +- variants/elbear_ace_uno/variant.c | 237 +- variants/elsomik/pins_arduino.h | 196 + variants/elsomik/variant.c | 240 + variants/start/pins_arduino.h | 67 +- variants/start/variant.c | 88 +- 211 files changed, 97525 insertions(+), 591 deletions(-) rename bootloaders/{ace-uno => elbear}/bootloader.hex (100%) create mode 100644 bootloaders/elsomik/bootloader.hex create mode 100644 cores/arduino/mik32/shared/svd/mik32v2.svd create mode 100644 docs/Pinout_nano.PNG create mode 100644 docs/Registers.png create mode 100644 docs/debug_console.PNG create mode 100644 docs/debug_description.md create mode 100644 docs/debug_panel.PNG create mode 100644 docs/debug_start.PNG create mode 100644 docs/elsomikOEM_pinout.png create mode 100644 docs/elsomikSE_pinout.png create mode 100644 docs/elsomik_description.md create mode 100644 docs/nano_description.md delete mode 100644 docs/pinout.PNG create mode 100644 docs/uno_pinout.png create mode 100644 libraries/FreeRTOS/CODE_OF_CONDUCT.md create mode 100644 libraries/FreeRTOS/LICENSE create mode 100644 libraries/FreeRTOS/examples/AnalogRead_DigitalRead/AnalogRead_DigitalRead.ino create mode 100644 libraries/FreeRTOS/examples/ArrayQueue/ArrayQueue.ino create mode 100644 libraries/FreeRTOS/examples/Blink_AnalogRead/Blink_AnalogRead.ino create mode 100644 libraries/FreeRTOS/examples/IntegerQueue/IntegerQueue.ino create mode 100644 libraries/FreeRTOS/examples/Interrupts/Interrupts.ino create mode 100644 libraries/FreeRTOS/examples/Mutex/Mutex.ino create mode 100644 libraries/FreeRTOS/examples/Notifications/Notifications.ino create mode 100644 libraries/FreeRTOS/examples/StructArray/StructArray.ino create mode 100644 libraries/FreeRTOS/examples/StructQueue/StructQueue.ino create mode 100644 libraries/FreeRTOS/examples/TaskStatus/TaskStatus.ino create mode 100644 libraries/FreeRTOS/examples/TaskUtilities/TaskUtilities.ino create mode 100644 libraries/FreeRTOS/keywords.txt create mode 100644 libraries/FreeRTOS/library.properties create mode 100644 libraries/FreeRTOS/readme.md create mode 100644 libraries/FreeRTOS/src/Arduino_FreeRTOS.h create mode 100644 libraries/FreeRTOS/src/FreeRTOSConfig.h create mode 100644 libraries/FreeRTOS/src/FreeRTOSVariant.h create mode 100644 libraries/FreeRTOS/src/LICENSE.md create mode 100644 libraries/FreeRTOS/src/event_groups.c create mode 100644 libraries/FreeRTOS/src/event_groups.h create mode 100644 libraries/FreeRTOS/src/freertos_risc_v_chip_specific_extensions.h create mode 100644 libraries/FreeRTOS/src/heap_1.c create mode 100644 libraries/FreeRTOS/src/list.c create mode 100644 libraries/FreeRTOS/src/list.h create mode 100644 libraries/FreeRTOS/src/message_buffer.h create mode 100644 libraries/FreeRTOS/src/mpu_wrappers.h create mode 100644 libraries/FreeRTOS/src/port.c create mode 100644 libraries/FreeRTOS/src/portASM.S create mode 100644 libraries/FreeRTOS/src/portContext.h create mode 100644 libraries/FreeRTOS/src/portable.h create mode 100644 libraries/FreeRTOS/src/portmacro.h create mode 100644 libraries/FreeRTOS/src/projdefs.h create mode 100644 libraries/FreeRTOS/src/queue.c create mode 100644 libraries/FreeRTOS/src/queue.h create mode 100644 libraries/FreeRTOS/src/semphr.h create mode 100644 libraries/FreeRTOS/src/stack_macros.h create mode 100644 libraries/FreeRTOS/src/stream_buffer.c create mode 100644 libraries/FreeRTOS/src/stream_buffer.h create mode 100644 libraries/FreeRTOS/src/task.h create mode 100644 libraries/FreeRTOS/src/tasks.c create mode 100644 libraries/FreeRTOS/src/timers.c create mode 100644 libraries/FreeRTOS/src/timers.h create mode 100644 libraries/FreeRTOS/src/variantHooks.cpp create mode 100644 libraries/IRremote/Contributing.md create mode 100644 libraries/IRremote/Contributors.md create mode 100644 libraries/IRremote/Doxyfile create mode 100644 libraries/IRremote/LICENSE create mode 100644 libraries/IRremote/README.md create mode 100644 libraries/IRremote/changelog.md create mode 100644 libraries/IRremote/examples/ControlRelay/ControlRelay.ino create mode 100644 libraries/IRremote/examples/ControlRelay/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/IRDispatcherDemo/DemoIRCommandMapping.h create mode 100644 libraries/IRremote/examples/IRDispatcherDemo/IRCommandDispatcher.h create mode 100644 libraries/IRremote/examples/IRDispatcherDemo/IRCommandDispatcher.hpp create mode 100644 libraries/IRremote/examples/IRDispatcherDemo/IRDispatcherDemo.ino create mode 100644 libraries/IRremote/examples/IRDispatcherDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/IRremoteExtensionTest/IRremoteExtensionClass.cpp create mode 100644 libraries/IRremote/examples/IRremoteExtensionTest/IRremoteExtensionClass.h create mode 100644 libraries/IRremote/examples/IRremoteExtensionTest/IRremoteExtensionTest.ino create mode 100644 libraries/IRremote/examples/IRremoteExtensionTest/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/IRremoteInfo/IRremoteInfo.ino create mode 100644 libraries/IRremote/examples/ReceiveAndSend/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/ReceiveAndSend/ReceiveAndSend.ino create mode 100644 libraries/IRremote/examples/ReceiveAndSendDistanceWidth/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/ReceiveAndSendDistanceWidth/ReceiveAndSendDistanceWidth.ino create mode 100644 libraries/IRremote/examples/ReceiveDemo/IRremote_SendDemo_ReceiveDemo.log create mode 100644 libraries/IRremote/examples/ReceiveDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/ReceiveDemo/ReceiveDemo.ino create mode 100644 libraries/IRremote/examples/ReceiveDump/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/ReceiveDump/ReceiveDump.ino create mode 100644 libraries/IRremote/examples/ReceiveDump/ReceiveDump.log create mode 100644 libraries/IRremote/examples/ReceiveOneAndSendMultiple/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/ReceiveOneAndSendMultiple/ReceiveOneAndSendMultiple.ino create mode 100644 libraries/IRremote/examples/ReceiverTimingAnalysis/ReceiverTimingAnalysis.ino create mode 100644 libraries/IRremote/examples/SendAndReceive/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendAndReceive/SendAndReceive.ino create mode 100644 libraries/IRremote/examples/SendAndReceive/SendAndReceive.log create mode 100644 libraries/IRremote/examples/SendBoseWaveDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendBoseWaveDemo/SendBoseWaveDemo.ino create mode 100644 libraries/IRremote/examples/SendDemo/IRremote_SendDemo_ReceiveDemo.log create mode 100644 libraries/IRremote/examples/SendDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendDemo/SendDemo.ino create mode 100644 libraries/IRremote/examples/SendLGAirConditionerDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendLGAirConditionerDemo/Readme.md create mode 100644 libraries/IRremote/examples/SendLGAirConditionerDemo/SendLGAirConditionerDemo.ino create mode 100644 libraries/IRremote/examples/SendProntoDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendProntoDemo/SendProntoDemo.ino create mode 100644 libraries/IRremote/examples/SendRawDemo/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SendRawDemo/SendRawDemo.ino create mode 100644 libraries/IRremote/examples/SimpleReceiver/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SimpleReceiver/SimpleReceiver.ino create mode 100644 libraries/IRremote/examples/SimpleReceiverForHashCodes/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SimpleReceiverForHashCodes/SimpleReceiverForHashCodes.ino create mode 100644 libraries/IRremote/examples/SimpleReceiverWithCallback/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SimpleReceiverWithCallback/SimpleReceiverWithCallback.ino create mode 100644 libraries/IRremote/examples/SimpleSender/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/SimpleSender/SimpleSender.ino create mode 100644 libraries/IRremote/examples/TinyReceiver/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/TinyReceiver/TinyReceiver.ino create mode 100644 libraries/IRremote/examples/TinySender/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/TinySender/TinySender.ino create mode 100644 libraries/IRremote/examples/UnitTest/PinDefinitionsAndMore.h create mode 100644 libraries/IRremote/examples/UnitTest/UnitTest.ino create mode 100644 libraries/IRremote/examples/UnitTest/UnitTest.log create mode 100644 libraries/IRremote/examples/UnitTest/UnitTest_64bit.log create mode 100644 libraries/IRremote/keywords.txt create mode 100644 libraries/IRremote/library.json create mode 100644 libraries/IRremote/library.properties create mode 100644 libraries/IRremote/pictures/BoseWaveMusicSystem.jpg create mode 100644 libraries/IRremote/pictures/BoseWaveSoundTouch_IV.jpg create mode 100644 libraries/IRremote/pictures/IRReceiverPinout.jpg create mode 100644 libraries/IRremote/pictures/IR_PWM_by_software_detail.png create mode 100644 libraries/IRremote/pictures/IR_PWM_by_software_jitter.png create mode 100644 libraries/IRremote/pictures/IR_RobotCar.jpg create mode 100644 libraries/IRremote/pictures/IR_UnitTest_delay.bmp create mode 100644 libraries/IRremote/pictures/LGRemote1.jpg create mode 100644 libraries/IRremote/pictures/LG_AKB73315611.jpg create mode 100644 libraries/IRremote/pictures/LG_AKB75415316.jpg create mode 100644 libraries/IRremote/pictures/SloeberDefineSymbols.png create mode 100644 libraries/IRremote/src/IRFeedbackLED.hpp create mode 100644 libraries/IRremote/src/IRProtocol.h create mode 100644 libraries/IRremote/src/IRProtocol.hpp create mode 100644 libraries/IRremote/src/IRReceive.hpp create mode 100644 libraries/IRremote/src/IRSend.hpp create mode 100644 libraries/IRremote/src/IRVersion.h create mode 100644 libraries/IRremote/src/IRremote.h create mode 100644 libraries/IRremote/src/IRremote.hpp create mode 100644 libraries/IRremote/src/IRremoteInt.h create mode 100644 libraries/IRremote/src/LongUnion.h create mode 100644 libraries/IRremote/src/TinyIR.h create mode 100644 libraries/IRremote/src/TinyIRReceiver.hpp create mode 100644 libraries/IRremote/src/TinyIRSender.hpp create mode 100644 libraries/IRremote/src/ac_LG.h create mode 100644 libraries/IRremote/src/ac_LG.hpp create mode 100644 libraries/IRremote/src/digitalWriteFast.h create mode 100644 libraries/IRremote/src/ir_BangOlufsen.hpp create mode 100644 libraries/IRremote/src/ir_BoseWave.hpp create mode 100644 libraries/IRremote/src/ir_Denon.hpp create mode 100644 libraries/IRremote/src/ir_DistanceWidthProtocol.hpp create mode 100644 libraries/IRremote/src/ir_FAST.hpp create mode 100644 libraries/IRremote/src/ir_JVC.hpp create mode 100644 libraries/IRremote/src/ir_Kaseikyo.hpp create mode 100644 libraries/IRremote/src/ir_LG.hpp create mode 100644 libraries/IRremote/src/ir_Lego.hpp create mode 100644 libraries/IRremote/src/ir_MagiQuest.hpp create mode 100644 libraries/IRremote/src/ir_NEC.hpp create mode 100644 libraries/IRremote/src/ir_Others.hpp create mode 100644 libraries/IRremote/src/ir_Pronto.hpp create mode 100644 libraries/IRremote/src/ir_RC5_RC6.hpp create mode 100644 libraries/IRremote/src/ir_Samsung.hpp create mode 100644 libraries/IRremote/src/ir_Sony.hpp create mode 100644 libraries/IRremote/src/ir_Template.hpp create mode 100644 libraries/IRremote/src/private/IRTimer.hpp create mode 100644 libraries/OneWire/OneWire.cpp create mode 100644 libraries/OneWire/OneWire.h create mode 100644 libraries/OneWire/docs/issue_template.md create mode 100644 libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino create mode 100644 libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino create mode 100644 libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino create mode 100644 libraries/OneWire/keywords.txt create mode 100644 libraries/OneWire/library.json create mode 100644 libraries/OneWire/library.properties create mode 100644 libraries/OneWire/util/OneWire_direct_gpio.h create mode 100644 libraries/OneWire/util/OneWire_direct_regtype.h create mode 100644 variants/elbear_ace_nano/pins_arduino.h create mode 100644 variants/elbear_ace_nano/variant.c create mode 100644 variants/elsomik/pins_arduino.h create mode 100644 variants/elsomik/variant.c diff --git a/README.md b/README.md index 90e0552..3b0aa46 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,10 @@ ## Платы, входящие в состав пакета Пакет включает в себя поддержку следующих плат: -- [Elbear Ace-Uno](./docs/Elbear_description.md) 8 Mb / 16 Mb / 32 Mb -- [START-MIK32](./docs/Start_mik32_description.md) +- [ELBEAR ACE-UNO](./docs/Elbear_description.md) 8 Mb / 16 Mb / 32 Mb +- [ELBEAR ACE-NANO](./docs/nano_description.md) +- [ELSOMIK](./docs/elsomik_description.md) +- [START-MIK32](./docs/Start_mik32_description.md) ## Особенности использования пакета в ArduinoIDE ### Цифровые выводы @@ -49,13 +51,16 @@ |Библиотека|Описание|Заметки| |---------|---------|------| -|[SPI](https://docs.arduino.cc/language-reference/en/functions/communication/SPI/)|Библиотека для работы с интерфейсом SPI|Для работы используется встроенный SPI1. Доступные делители частоты - `SPI_CLOCK_DIV2`, `SPI_CLOCK_DIV4`, `SPI_CLOCK_DIV8`, `SPI_CLOCK_DIV16`, `SPI_CLOCK_DIV32`, `SPI_CLOCK_DIV64`, `SPI_CLOCK_DIV128`, `SPI_CLOCK_DIV256`, обеспечивают частоту работы от 125 кГц до 16 МГц. Скорость работы по умолчанию - 4 МГц. Для задания режима и скорости работы рекомендуется использовать `SPISettings(uint32_t speedMaximum, uint8_t dataOrder, uint8_t dataMode)`, а не соответствующие отдельные функции| +|[SPI](https://docs.arduino.cc/language-reference/en/functions/communication/SPI/)|Библиотека для работы с интерфейсом SPI|Для работы доступно два экземпляра класса - SPI (используется аппаратный SPI1) и SPI1 (используется аппаратный SPI0). Выводы, на которых доступны интерфейсы, перечислены в описании каждой платы. Доступные делители частоты - `SPI_CLOCK_DIV2`, `SPI_CLOCK_DIV4`, `SPI_CLOCK_DIV8`, `SPI_CLOCK_DIV16`, `SPI_CLOCK_DIV32`, `SPI_CLOCK_DIV64`, `SPI_CLOCK_DIV128`, `SPI_CLOCK_DIV256`, обеспечивают частоту работы от 125 кГц до 16 МГц. Скорость работы по умолчанию - 4 МГц. Для задания режима и скорости работы рекомендуется использовать `SPISettings(uint32_t speedMaximum, uint8_t dataOrder, uint8_t dataMode)`, а не соответствующие отдельные функции| |[Wire](https://docs.arduino.cc/language-reference/en/functions/communication/Wire/)|Библиотека для работы с интерфейсом I2C|Для работы используется встроенный I2C1. Доступные частоты работы интерфейса: 100 кГц (`WIRE_FREQ_100K`), 400 кГц (`WIRE_FREQ_400K`), 1000 кГц (`WIRE_FREQ_1000K`). Скорость работы по умолчанию - 100 кГц. В режиме работы в качестве ведомого устройства функции, заданные через `void onReceive( void (*)(int)` и `void onRequest( void (*)(void) )`, выполняются в прерывании| |[SoftwareSerial](https://docs.arduino.cc/learn/built-in-libraries/software-serial/)|Библиотека, реализующая программный последовательный интерфейс.|Доступные скорости работы - от 300 до 57600 бод. Для отправки данных (TX) можно использовать любой цифровой вывод. Для приема данных (RX) можно использовать только выводы, поддерживающие прерывания. Обработчик прерывания и связанные с ним функции располагаются в памяти RAM| |[EEPROM](https://docs.arduino.cc/learn/built-in-libraries/eeprom/)|Библиотека для работы с памятью EEPROM|Для использования доступно 1024 байта встроенной EEPROM памяти. Для корректной работы библиотеки обязательно вызывать функцию `void EEPROM.begin()` перед началом работы с памятью| -|[Servo](https://docs.arduino.cc/libraries/servo/)|Библиотека для работы с сервоприводом|Библиотека использует 16-битный таймер 2 и прерывания от него. Любой цифровой вывод подходит для управления сервоприводом. Одновременно можно использовать до 12 сервоприводов| +|[Servo](https://docs.arduino.cc/libraries/servo/)|Библиотека для работы с сервоприводом|Библиотека использует 16-битный таймер 2 и прерывания от него. Любой цифровой вывод подходит для управления сервоприводом. Одновременно можно использовать до 12 сервоприводов. Для работы библиотеки используется таймер timer16_2| |[NeoPixel](https://docs.arduino.cc/libraries/adafruit-neopixel/)|Библиотека для работы с адресными светодиодами|Функция, выводящая состояние пикселей на цифровой вывод платы, перенесена в память RAM для корректной работы на MIK32 Амур| |[MFRC522](https://docs.arduino.cc/libraries/mfrc522/)|Библиотека для работы с RFID картами|Исправлен баг, вызывающий ошибку компиляции в новых компиляторах gcc| +|[OneWire](https://docs.arduino.cc/libraries/onewire/)|Библиотека для работы с интерфейсом 1-Wire|В стандартную библиотеку добавлена поддержка микроконтроллера MIK32 Amur| +|[IRremote](https://docs.arduino.cc/libraries/irremote/)|Библиотека позволяет отправлять и принимать инфракрасные сигналы, используя определенный набор протоколов|В стандартную библиотеку добавлена поддержка микроконтроллера MIK32 Amur. При приеме данных используется прерывание таймера timer16_0, работает с любым цифровым выводом. Для отправки данных с помощью встроенного ШИМ для плат Elbear Ace-Uno используется вывод D3, для платы START-MIK32 - вывод P0_0| +|[FreeRTOS](https://docs.arduino.cc/libraries/freertos/)|Библиотека для работы с операционной системой реального времени FreeRTOS|В стандартную библиотеку добавлена поддержка микроконтроллера MIK32 Amur. Период системного тика составляет 10 мс и формируется с помощью машинного таймера SysTick| ## Протестированные библиотеки |Библиотека|Описание| @@ -87,13 +92,18 @@ |[Adafruit_ILI9341](https://docs.arduino.cc/libraries/adafruit-ili9341/)|Библиотека для работы с дисплеем Adafruit ILI9341| |[TFT](https://docs.arduino.cc/libraries/tft/)|Графическая библиотека, совместимая с большинством TFT-дисплеев на базе чипа ST7735| |[Adafruit_TCS34725](https://docs.arduino.cc/libraries/adafruit-tcs34725/)|Библиотека для работы с датчиком цвета с ИК-фильтром TCS34725| - +|[DS18B20](https://docs.arduino.cc/libraries/ds18b20/)|Библиотека для работы с однопроводным датчиком температуры DS18B20| + ## Протестированные модули Список модулей и шилдов, работа которых была протестирована на платах, входящих в состав пакета поддержки, доступен [здесь](./docs/tested_shields.md). +# Режим отладки +Для всех плат, входящих в состав пакета, доступен режим отладки скетча в ArduinoIDE версии 2. Подготовка к работе в режиме отладки описана в [инструкции.](./docs/debug_description.md) + # Полезные ссылки * [Материалы по платам ELBEAR ACE-UNO](https://elron.tech/support/#elbear) -* [Телеграмм-канал компании (обновления по проекту ELBEAR и другим)](https://t.me/elrontech) +* [Материалы по платам ELSOMIK](https://elron.tech/support/#elsomik) * [Материалы по плате START-MIK32](https://wiki.mik32.ru/%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D0%B0_%D0%A1%D1%82%D0%B0%D1%80%D1%82) +* [Телеграмм-канал компании](https://t.me/elrontech) При возникновении вопросов или выявлении проблем можно оставить заявку [здесь](https://gitflic.ru/project/elron-tech/elbear_arduino_bsp/issue). diff --git a/boards.txt b/boards.txt index 407bcde..3abbb50 100644 --- a/boards.txt +++ b/boards.txt @@ -1,8 +1,8 @@ # See: https://arduino.github.io/arduino-cli/latest/platform-specification/ ############################################################## -##################### Ace-Uno 8 Mb ##################### -aceUno8Mb.name=Elbear Ace-Uno 8 Mb +##################### ACE-UNO 8 Mb ##################### +aceUno8Mb.name=ELBEAR ACE-UNO 8 Mb # tool for firmware update aceUno8Mb.upload.tool=elbear_uploader @@ -14,7 +14,7 @@ aceUno8Mb.upload.speed=230400 # tool for bootloader update aceUno8Mb.bootloader.tool=mik32_upload aceUno8Mb.bootloader.tool.default=mik32_upload -aceUno8Mb.bootloader.file=ace-uno/bootloader.hex +aceUno8Mb.bootloader.file=elbear/bootloader.hex aceUno8Mb.bootloader.interface=ftdi/mikron-link.cfg aceUno8Mb.bootloader.params.verbose= @@ -28,8 +28,8 @@ aceUno8Mb.build.extra_flags= aceUno8Mb.build.flags= -##################### Ace-Uno 16 Mb ##################### -aceUno16Mb.name=Elbear Ace-Uno 16 Mb +##################### ACE-UNO 16 Mb ##################### +aceUno16Mb.name=ELBEAR ACE-UNO 16 Mb # tool for firmware update aceUno16Mb.upload.tool=elbear_uploader @@ -41,7 +41,7 @@ aceUno16Mb.upload.speed=230400 # tool for bootloader update aceUno16Mb.bootloader.tool=mik32_upload aceUno16Mb.bootloader.tool.default=mik32_upload -aceUno16Mb.bootloader.file=ace-uno/bootloader.hex +aceUno16Mb.bootloader.file=elbear/bootloader.hex aceUno16Mb.bootloader.interface=ftdi/mikron-link.cfg aceUno16Mb.bootloader.params.verbose= @@ -55,8 +55,8 @@ aceUno16Mb.build.extra_flags= aceUno16Mb.build.flags= -##################### Ace-Uno 32 Mb ##################### -aceUno32Mb.name=Elbear Ace-Uno 32 Mb +##################### ACE-UNO 32 Mb ##################### +aceUno32Mb.name=ELBEAR ACE-UNO 32 Mb # tool for firmware update aceUno32Mb.upload.tool=elbear_uploader @@ -68,7 +68,7 @@ aceUno32Mb.upload.speed=230400 # tool for bootloader update aceUno32Mb.bootloader.tool=mik32_upload aceUno32Mb.bootloader.tool.default=mik32_upload -aceUno32Mb.bootloader.file=ace-uno/bootloader.hex +aceUno32Mb.bootloader.file=elbear/bootloader.hex aceUno32Mb.bootloader.interface=ftdi/mikron-link.cfg aceUno32Mb.bootloader.params.verbose= @@ -81,6 +81,58 @@ aceUno32Mb.build.variant=elbear_ace_uno aceUno32Mb.build.extra_flags= aceUno32Mb.build.flags= +##################### ACE-NANO ##################### +aceNano.name=ELBEAR ACE-NANO + +# tool for firmware update +aceNano.upload.tool=elbear_uploader +aceNano.upload.protocol=elbear_uploader +aceNano.upload.maximum_size=8388608 +aceNano.upload.maximum_data_size=16384 +aceNano.upload.speed=230400 + +# tool for bootloader update +aceNano.bootloader.tool=mik32_upload +aceNano.bootloader.tool.default=mik32_upload +aceNano.bootloader.file=elbear/bootloader.hex +aceNano.bootloader.interface=ftdi/mikron-link.cfg +aceNano.bootloader.params.verbose= + +# build options +aceNano.build.mcu=MIK32_Amur +aceNano.build.f_cpu=32000000UL +aceNano.build.board=ACE_NANO +aceNano.build.core=arduino +aceNano.build.variant=elbear_ace_nano +aceNano.build.extra_flags= +aceNano.build.flags= + +##################### ELSOMIK ##################### +elsomik.name=ELSOMIK + +# tool for firmware update +elsomik.upload.tool=elbear_uploader +elsomik.upload.protocol=elbear_uploader +elsomik.upload.maximum_size=8388608 +elsomik.upload.maximum_data_size=16384 +elsomik.upload.speed=230400 + +# tool for bootloader update +elsomik.bootloader.tool=mik32_upload +elsomik.bootloader.tool.default=mik32_upload +elsomik.bootloader.file=elsomik/bootloader.hex +elsomik.bootloader.interface=ftdi/mikron-link.cfg +elsomik.bootloader.params.verbose= + +# build options +elsomik.build.mcu=MIK32_Amur +elsomik.build.f_cpu=32000000UL +elsomik.build.board=ELSOMIK +elsomik.build.core=arduino +elsomik.build.variant=elsomik +elsomik.build.extra_flags= +elsomik.build.flags= + ##################### START-MIK32-V1 ##################### start-mik32-v1.name=START-MIK32-V1 diff --git a/bootloaders/ace-uno/bootloader.hex b/bootloaders/elbear/bootloader.hex similarity index 100% rename from bootloaders/ace-uno/bootloader.hex rename to bootloaders/elbear/bootloader.hex diff --git a/bootloaders/elsomik/bootloader.hex b/bootloaders/elsomik/bootloader.hex new file mode 100644 index 0000000..3e826ca --- /dev/null +++ b/bootloaders/elsomik/bootloader.hex @@ -0,0 +1,261 @@ +:020000040100F9 +:10000000FD62938202400100FD12E39E02FE374131 +:10001000000213010100B701000293810100B7152E +:100020000001938505FF3716000113060602B70687 +:1000300000029386060039A083A2050023A0560083 +:1000400091059106E3EAC5FEB71500019385050207 +:100050003716000113060602B7060002938606262D +:1000600039A083A2050023A0560091059106E3EA7A +:10007000C5FEB70500029385050337060002130687 +:10008000062621A023A005009105E3EDC5FEB700DB +:100090000001E780C00AB7000001E780C00AB7107E +:1000A0000001E780808473005010F5BF828000005B +:1000B0000000000000000000000000000000000040 +:1000C0006F004000197106C20AC40EC612C816CAD3 +:1000D0001ACC1ECE22D026D22AD42ED632D836DA48 +:1000E0003ADC3EDEC2C0C6C2CAC4CEC6D2C8D6CA78 +:1000F000DACCDECEE2D0E6D2EAD4EED6F2D8F6DA28 +:10010000FADCFEDE970000009380E00482909240CB +:100110002241B2414242D2426243F24302549254DB +:100120002255B2554256D2566257F2570648964863 +:100130002649B649464AD64A664BF64B065C965C5B +:10014000265DB65D465ED65E665FF65F096173004A +:10015000203001A03D432A876373C3029377F700E1 +:10016000BDEFADE5937606FF3D8ABA960CC34CC34E +:100170000CC74CC74107E36BD7FE11E28280B30680 +:10018000C3408A069702000096966780A600230760 +:10019000B700A306B7002306B700A305B7002305E1 +:1001A000B700A304B7002304B700A303B7002303D9 +:1001B000B700A302B7002302B700A301B7002301D1 +:1001C000B700A300B7002300B700828093F5F50FB6 +:1001D00093968500D58D93960501D58D61B793963D +:1001E00027009702000096968682E78086FA96801E +:1001F000C1171D8F3E96E374C3F8A5B7B707050076 +:100200000947D8CFB7170500938707C0984385667D +:1002100093860640558F98C398471367074098C741 +:10022000B71708009387074023A0070023A2070001 +:1002300023A407001307A008D8C77D57D8CF354798 +:1002400098C3D84F935657018D8AE5DE8280B71741 +:1002500008009387074023A0070023A2070023A4D8 +:10026000070023A607007D57D8CF23A40702B7179E +:100270000500938707C09843F1769386F63F758F04 +:1002800098C398471377F7BF98C7B7070500094782 +:1002900098D38280B71708009387074088D7D84F34 +:1002A000137707046DDF82803707000203234704BA +:1002B000B706000237150800B7450F0023A406044F +:1002C0008147014613050540938515240328C50180 +:1002D000B308F30013780802630C080205C2232256 +:1002E000170537470F0023A4F60413070724639765 +:1002F000E700B707000205472383E700B7170800A8 +:1003000093870740C85342054181828005467DBFDF +:100310008507E39DB7FE7DD2B7470F00938707247B +:1003200023A4F60423221705E9B7411106C622C407 +:1003300026C2AA84EF00B022E1689388086A0148C7 +:100340008147014781460146B70520C72685379476 +:100350009800EF003006130414687D1419E40D456D +:10036000B240224492444101828085452685EF00B7 +:10037000702005897DF10145E5B7411122C437049C +:100380000002930704008C43B70700804AC0BE9563 +:10039000B707000223AEB70206C626C293974501EF +:1003A000130404003709000289E713058900EF00F0 +:1003B00090290C40B70400029386C4041306001071 +:1003C00013058900EF0070231C4037070002835695 +:1003D0008703938707101CC013060010B68763F4C9 +:1003E000C600930700101384C4041305F400938718 +:1003F00007F01306100F814513040410231CF702A5 +:10040000913BA2851385C4043D46EF0010282320AC +:1004100004002322040023240400231604002307DD +:100420000400B240224492440249410182805D713D +:10043000130680028145280886C6293BBD47230C48 +:10044000F1008947230EF1003ED2E1779387070838 +:100450002C080A85231AF102E52BB64061618280DF +:100460005D71A2C4370400021305840086C6A6C2CB +:10047000CAC0652513058400EF00807D85451305FE +:100480008400EF00300F8D47814463E3A700AA8406 +:10049000894513058400EF00F00D937725002A8627 +:1004A00089E7136625001376F60FA68513058400E9 +:1004B000EF00B00FE1689388086A0148814701475F +:1004C00081460146B705203813058400E525E1681B +:1004D00038009388086A1308000285468147014660 +:1004E000B70599EB1305840023040100E125B71536 +:1004F00000015146938505FD6800EF0010191309AE +:100500008400832709006C0051463ED085473ED2C7 +:100510006810C1673ED4EF005017B70607009C4231 +:100520003707F1FF7D17F98F08109CC20D2DB640DB +:1005300026449644064961618280411106C6013B0A +:100540000537B707008073905730B700008082905E +:10055000B2404101828041113707000222C406C621 +:100560009307070083C76700854613040700638E5F +:10057000D70009476388E70023030400B240224400 +:10058000410182801305000F3133B71708009387AC +:100590000740D84F218B09C7D84F13678700D8CFA2 +:1005A000693FD9BF411106C622C426C24AC083474B +:1005B000350005476383E70811472A846389E7000C +:1005C0008DCFB24022449244024941018280B70754 +:1005D000000283D7870391C34D3383474400034709 +:1005E0005400E2074207BA97370700022320F704B6 +:1005F000370700022320F700E9B7370900028354C8 +:1006000089030346050093054500370500021305DD +:10061000C5042695EF00700783470400BE94C2040A +:10062000C180231C99029307F00FE3FC97F8224442 +:10063000B24092440249410189B33D45A139B7070F +:10064000000283D7870391C30D3B2244B2409244FA +:1006500002494101DDB53707000241119306070049 +:1006600003DF460026C4B704000283A2840422C626 +:100670003715080037040002B7480F0037430F0052 +:10068000370E00024AC28147232A04021309FFFFE2 +:10069000814E814681458143014801461307070089 +:1006A000130505409388182413030324130ECE1555 +:1006B000636FE60363850E0009462303C70089C6FE +:1006C000B7060002A388F60299C1232A74026304C4 +:1006D000080023A4540483476700A9E73244A244D6 +:1006E0001249370500021305C515410165BD814258 +:1006F0000328C50113780802631B08028502E399E9 +:1007000012FF89C6B7060002A388F60299C1232A00 +:100710007402B7470F009387072423A4F404854786 +:100720002303F7003244A244124941018280E38A44 +:1007300062FC03284502937FF80F637D260113783E +:10074000F80FC29385453308CE002300F801050653 +:100750000548B9BFB307704093F7F70F6394FF00E4 +:100760008546D5B7854EEDBF011122CC4EC652C489 +:1007700037040002B7490F00371ADCBA26CA4AC844 +:1007800056C25AC006CE13040400370900029389EA +:10079000F923930A0003B7040002391A370B000249 +:1007A000213683274904A303A40063F3F9007133BE +:1007B0008347640099C34533E5B783467400638873 +:1007C0005605930700066381F60603C704038D47A9 +:1007D000998F8E07B357FA0093F7F70F6393F606D6 +:1007E0009307170093F7F70F2388F4021147639DCF +:1007F000E7003D45453413058B00053E29C113052F +:10080000000F493C238804022322090451BF3D45BF +:100810002322090423880402B53C793405052312F8 +:10082000A4003D45853CADBF3D45232209042388F6 +:1008300004028D340D3583476400B5FFDDB73D45B7 +:10084000C9B723880402A9BF011106CE22CCC53640 +:100850003704000213058400C92413058400CD2E3B +:10086000E1689388086A0148814778008546014617 +:10087000B705D9EB1305840023060100252EE16896 +:100880009388086A01488147014781460146B705B8 +:1008900038FF13058400392E9532F9350547AA87AC +:1008A0006305E50209476300E506054591EBB706D8 +:1008B0000600DC4A7D771307F73FF98FDCCA014554 +:1008C00082807D1719EB0D4582809306004037A783 +:1008D000070013070712B7050500905D7D8E75D2DE +:1008E000370606005C4A7D771307F73FF98FD58FEF +:1008F00041115CCA02C613073006B2476359F700BC +:10090000014541018280856693860680C9B7B2475A +:1009100085073EC6DDB791476307F50263EAA70086 +:100920008547630AF50489476309F5040545828014 +:10093000A147E31DF5FE0947094501A8FD1781EF11 +:10094000C8D20D45828005470D45B7A7070093879C +:100950000712B7060500905E798E6DD28A05C98DA3 +:100960004111CCD202C613073006B247635AF700D2 +:100970000145410182801147C9BF21470145F1B7B7 +:10098000B24785073EC6D5B70547AA876305E50286 +:1009900009476302E506054591EBB70606009C4A48 +:1009A0007D771307F73FF98F9CCA014582807D1739 +:1009B00019EB0D4582809306004037A70700130707 +:1009C0000712B7050500905D7D8E75D237070600CA +:1009D0001C4B7D761306F63FF18FD58F1CCB8547D8 +:1009E0001CCF411102C613073006B2476359F70006 +:1009F0000145410182808566938606807DBFB247AE +:100A000085073EC6DDB711C98547630DF50205456B +:100A10008280FD1791EB0D4582800946B7A707003C +:100A200093870712B7060500985E718F7DD3411139 +:100A3000C8D602C613073006B2476357F700014510 +:100A4000410182800546D9BFB24785073EC6EDB752 +:100A5000011126CAB7040600DC4806CE22CC4AC8DB +:100A60004EC652C456C2F19BDCC89C482A89C84570 +:100A7000F19B9CC883C7C5012E848A07DCC883C745 +:100A8000D5018A079CC8193D0C44AA8A0345440035 +:100A900059351848B70705002A8A98C3584808509E +:100AA000D8C3184C98C7CD35AA894850A93F834769 +:100AB00004002A8793F6170089E6D44893E62600B7 +:100AC000D4C893F6270099E637060600544A93E601 +:100AD000160054CA93F6470099E637060600144AF2 +:100AE00093E6260014CAA18B99E7B70606009C4A34 +:100AF00093E717009CCAF240624423205901232245 +:100B00004901232439012326E900D244B249224A6B +:100B1000924A4A85424905618280011106CE22CC63 +:100B200002C402C62147B707050037550800D8C7D9 +:100B300005448D478A85130505803EC022C2292AB7 +:100B4000375508009307C0038A851305058022C224 +:100B500022C43EC01122F2406244056182804111EC +:100B600022C406C62A84553F18405C4F93E707010C +:100B70005CCF1C441CCB5C4085CB1C43B7061000EB +:100B8000D58F1CC3144C5C48B240D606CE07D58F17 +:100B900083460401C206D58F8346C4012244E2067F +:100BA000D58F1CCF410182801C43B706F0FFFD1694 +:100BB000F58FC1BF032305002A8E0325C3011365EA +:100BC0000502232EA3002324C30013962601498285 +:100BD0004D8E232603012322C3001396050163547F +:100BE000060299C20545B1CB01476346D700639C15 +:100BF00008020D4582803386E7000346060005079C +:100C0000230AC300DDB799C2054505CB8147E3D070 +:100C1000D7FE03260E00034546013306F70085077D +:100C20002300A600EDB783270E00FD18DC4F93F7D5 +:100C30000702D5DF11656D8D11E18280B7070700CE +:100C400083C7470113F585001D8D3335A0008280D1 +:100C50001C414147D8CF8280B7470800938707409F +:100C60002A886304F508B757080093870780630450 +:100C7000F50A37470800630DE50A05458280331EF3 +:100C80001F013376DE0129C683A3450088431393F1 +:100C9000180033966F001346F6FF13F43300718D7E +:100CA00033146400418D88C3638B5302638C030249 +:100CB000084303AEC500718D331E6E003365C50158 +:100CC00008C38842698E884533156500498E90C2F5 +:100CD000850833D51E0145F5324441018280232623 +:100CE000C801F9B72324C801E1B7B71605003717C3 +:100CF0000500B7170500938646C1130707C1938700 +:100D0000C7C083AE05008148054F8D4F914233D552 +:100D10001E0105ED8280B716050037170500B717CD +:100D20000500938606C21307C7C1938787C1D1BF49 +:100D3000B716050037170500B7170500938686C05C +:100D4000130747C0938707C06DBF331E1F0133765B +:100D5000DE0119E2850865BF411122C635B7E16899 +:100D60009388086A01488147014781460146B705D3 +:100D7000200689B5011106CEA307010089476393B8 +:100D8000F502B7052035E1681307F1009388086A7A +:100D90000148814785460146313DF2400345F10057 +:100DA00005618280B7052005F9BF011106CE22CC6E +:100DB00026CA2306B100AA84A306C1004D37E16804 +:100DC0009388086A01487C00014789460146B78537 +:100DD000200126850964F93B130414717D1419E47C +:100DE0000D45F2406244D2440561828085452685E6 +:100DF0005137058965F50145EDB7011106CE22CCC5 +:100E000026CA2E844AC8AA84328936C6893FB24788 +:100E1000E16822869388086A01480147CA86B78537 +:100E200080022685616479331304146A7D1411C429 +:100E3000854526858137058975F9F2406244D2449B +:100E4000424905618280011106CE22CC26CA2EC6F7 +:100E5000AA8431373246E1689388086A014881479D +:100E600001478146B705802026856164A1331304BC +:100E7000146A7D1411C485452685ED3D058975F9F3 +:100E8000F2406244D24405618280B3C7A5008D8BD5 +:100E9000B308C500B1E78D4763F4C7049377350005 +:100EA0002A87B9EB13F6C8FFB306E64093070002A2 +:100EB00063C8D706AE86BA876371C70203A8060067 +:100EC0009107910623AE07FFE3EAC7FE9307F6FFFB +:100ED000998FF19B91073E97BE95636617018280BB +:100EE0002A87637E150383C7050005078505A30FC1 +:100EF000F7FEE39AE8FE828083C605000507937734 +:100F00003700A30FD7FE8505D1DF83C6050005078F +:100F100093773700A30FD7FE8505F9FF61B782806D +:100F2000411122C61304000283A3050083A24500D9 +:100F300083AF850003AFC50083AE050103AE450155 +:100F400003A3850103A8C501945113074702B30702 +:100F5000E640232E77FC232057FE2322F7FF23248D +:100F6000E7FF2326D7FF2328C7FF232A67FE232C6A +:100F700007FF232ED7FE93854502E347F4FAAE869A +:100F8000BA876371C70203A806009107910623AED2 +:100F900007FFE3EAC7FE9307F6FF998FF19B9107DE +:100FA0003E97BE956365170132444101828083C735 +:100FB000050005078505A30FF7FEE387E8FE83C755 +:100FC000050005078505A30FF7FEE392E8FEE9BFDC +:100FD00020000000010000000300000006000000E7 +:100FE000EB00000000000000000000000000000016 +:100FF000000000800000000000000700000000006A +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:0400000501000000F6 +:00000001FF diff --git a/cores/arduino/Tone.cpp b/cores/arduino/Tone.cpp index 6c9f04d..f463f66 100644 --- a/cores/arduino/Tone.cpp +++ b/cores/arduino/Tone.cpp @@ -79,6 +79,12 @@ static void calcFrequencyParams(FrequencyParams_t* params, unsigned int newFrequ // start tone with frequency (in hertz) and duration (in milliseconds) void tone(uint8_t pin, unsigned int frequency, unsigned long duration) { + if ((pin>=pinCommonQty())) + { + ErrorMsgHandler("tone(): pin number exceeds the total number of pins"); + return; + } + if (!timerIsOn) // if tone is not generated at the moment { // calculate the parameters necessary to ensure a given frequency if the frequency has changed @@ -123,6 +129,12 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) // stop tone void noTone(uint8_t pin) { + if ((pin>=pinCommonQty())) + { + ErrorMsgHandler("noTone(): pin number exceeds the total number of pins"); + return; + } + if (timerIsOn) { // pin to 0 diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index 6535748..77b6e0b 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -2,8 +2,14 @@ #include "Arduino.h" +// Weak empty variant initialization function. +// May be redefined by variant files. +void initVariant() __attribute__((weak)); +void initVariant() { } + int main() { + initVariant(); // for freeRTOS setup(); post_init(); diff --git a/cores/arduino/mik32/hal/peripherals/Include/mik32_hal_gpio.h b/cores/arduino/mik32/hal/peripherals/Include/mik32_hal_gpio.h index bc3237d..4d90b46 100644 --- a/cores/arduino/mik32/hal/peripherals/Include/mik32_hal_gpio.h +++ b/cores/arduino/mik32/hal/peripherals/Include/mik32_hal_gpio.h @@ -36,6 +36,7 @@ extern "C" { */ typedef enum __HAL_PinsTypeDef { + NOT_A_PIN = (0 << 0), /**< Не выбран пин. */ GPIO_PIN_0 = (1 << 0), /**< Выбран пин 0. */ GPIO_PIN_1 = (1 << 1), /**< Выбран пин 1. */ GPIO_PIN_2 = (1 << 2), /**< Выбран пин 2. */ diff --git a/cores/arduino/mik32/shared/ldscripts/spifi_cpp.ld b/cores/arduino/mik32/shared/ldscripts/spifi_cpp.ld index 20ded45..0e80a68 100644 --- a/cores/arduino/mik32/shared/ldscripts/spifi_cpp.ld +++ b/cores/arduino/mik32/shared/ldscripts/spifi_cpp.ld @@ -123,6 +123,7 @@ SECTIONS { PROVIDE(__STACK_START__ = .); . += STACK_SIZE; PROVIDE(__C_STACK_TOP__ = .); + PROVIDE(__freertos_irq_stack_top = .); PROVIDE(__STACK_END__ = .); } >ram diff --git a/cores/arduino/mik32/shared/svd/mik32v2.svd b/cores/arduino/mik32/shared/svd/mik32v2.svd new file mode 100644 index 0000000..5bede69 --- /dev/null +++ b/cores/arduino/mik32/shared/svd/mik32v2.svd @@ -0,0 +1,23943 @@ + + + + Mikron + MIK32 + MIK32 + 1.0 + MIK32_V2 registers description + MIT License \n + \n +Copyright (c) 2024 Лаборатория системных разработок, Mikron \n + \n +Permission is hereby granted, free of charge, to any person obtaining a copy \n +of this software and associated documentation files (the "Software"), to deal \n +in the Software without restriction, including without limitation the rights \n +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell \n +copies of the Software, and to permit persons to whom the Software is \n +furnished to do so, subject to the following conditions: \n + \n +The above copyright notice and this permission notice shall be included in all \n +copies or substantial portions of the Software. \n + \n +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \n +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \n +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \n +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \n +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \n +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \n +SOFTWARE. \n + 8 + + 32 + + + 32 + + read-write + + 0x00000000 + + 0xFFFFFFFF + + + + DMA + Прямой доступ к памяти + 0x00040000 + + 0 + 0x44 + registers + + + + CH1_DST + Регистр адреса назначения канала 1 + 0x00 + read-write + 0x00000000 + 0xFFFFFFFF + + + Dst + Адрес назначения. +В режиме чтения текущего статуса (Current_valuе=1) возвращает последнюю переданную подзадачу контроллера канала. +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса + [31:0] + read-write + + + + + CH1_SRC + Регистр адреса источника канала 1 + 0x04 + read-write + 0x00000000 + 0xFFFFFFFF + + + Src + Адрес источника + +В режиме чтения текущего статуса (Current_valuе=1) возвращает текущую подзадачу контроллера канала. Указатель на адрес блока, который обрабатывается вычисляется как: +Current_ch_read_task - 2^READ_BURST_SIZE + +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса, вернувшего HRESP=1 + + [31:0] + read-write + + + + + CH1_LEN + Регистр размера передаваемых данных канала 1 + 0x08 + read-write + 0x00000000 + 0xFFFFFFFF + + + Data_Len + Количество байт пересылки рассчитывается как LEN +1 + +В режиме чтения текущего статуса (Current_valuе=1) возвращает счётчик байт подзадач контроллера. Счётчик байт подзадач обновляется только по подзадачам записи. Кол-во байт в блоках, которые удалось записать вычисляется как: +If (state==write): LEN - 2^WRITE_BURST_SIZE +If (state==read): Current byte len + [31:0] + read-write + + + + + CH1_CFG + Регистр управления и конфигурации канала 1 + 0x0C + read-write + 0x00000000 + 0xFFFFFFFF + + + ENABLE + Разрешение работы канала + [0:0] + read-write + + + Stop + Принудительная остановка + 0b00 + + + Start + Инициализация работы канала + 0b01 + + + + + PRIOR + Приоритет канала + [2:1] + read-write + + + Low + Принудительная остановка + 0b00 + + + Medium + Инициализация работы канала + 0b01 + + + High + Инициализация работы канала + 0b010 + + + Very_high + Инициализация работы канала + 0b11 + + + + + READ_MODE + Режим адреса источника + [3:3] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + WRITE_MODE + Режим адреса назначения + [4:4] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + READ_INCREMENT + Инкремент адреса источника + [5:5] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + WRITE_INCREMENT + Инкремент адреса назначения + [6:6] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + READ_SIZE + Разрядность адреса источника. +Должно быть кратно data_len + [8:7] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + WRITE_SIZE + Разрядность адреса назначения. +Должно быть кратно LEN + [10:9] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + READ_BURST_SIZE + Количество байт в пакете. +Определяется как 2^read_block_size. +Должно быть кратно read_size. + [13:11] + read-write + + + WRITE_BURST_SIZE + Количество байт в пакете. +Определяется как 2^write_block_size. +Должно быть кратно write_size. + [16:14] + read-write + + + READ_REQUEST + Выбор периферийной линии источника + [20:17] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + WRITE_REQUEST + Выбор периферийной линии назначения + [24:21] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + READ_ACK_EN + Разрешение работы логики с откликом для адресата источника + [25:25] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + WRITE_ACK_EN + Разрешение работы логики с откликом для адресата назначения + [26:26] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + IRQ_EN + Разрешение формирования прерывания по завершении работы канала: + 0 – прерывание не формируется; + 1 – прерывание формируется + [27:27] + read-write + + + Disable + Прерывание не формируется + 0 + + + Enable + Прерывание формируется + 1 + + + + + + + CH2_DST + Регистр адреса назначения канала 2 + 0x10 + read-write + 0x00000000 + 0xFFFFFFFF + + + Dst + Адрес назначения. +В режиме чтения текущего статуса (Current_valuе=1) возвращает последнюю переданную подзадачу контроллера канала. +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса + [31:0] + read-write + + + + + CH2_SRC + Регистр адреса источника канала 2 + 0x14 + read-write + 0x00000000 + 0xFFFFFFFF + + + Src + Адрес источника + +В режиме чтения текущего статуса (Current_valuе=1) возвращает текущую подзадачу контроллера канала. Указатель на адрес блока, который обрабатывается вычисляется как: +Current_ch_read_task - 2^READ_BURST_SIZE + +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса, вернувшего HRESP=1 + + [31:0] + read-write + + + + + CH2_LEN + Регистр размера передаваемых данных канала 2 + 0x18 + read-write + 0x00000000 + 0xFFFFFFFF + + + Data_Len + Количество байт пересылки рассчитывается как LEN +1 + +В режиме чтения текущего статуса (Current_valuе=1) возвращает счётчик байт подзадач контроллера. Счётчик байт подзадач обновляется только по подзадачам записи. Кол-во байт в блоках, которые удалось записать вычисляется как: +If (state==write): LEN - 2^WRITE_BURST_SIZE +If (state==read): Current byte len + [31:0] + read-write + + + + + CH2_CFG + Регистр управления и конфигурации канала 2 + 0x1C + read-write + 0x00000000 + 0xFFFFFFFF + + + ENABLE + Разрешение работы канала + [0:0] + read-write + + + Stop + Принудительная остановка + 0b00 + + + Start + Инициализация работы канала + 0b01 + + + + + PRIOR + Приоритет канала + [2:1] + read-write + + + Low + Принудительная остановка + 0b00 + + + Medium + Инициализация работы канала + 0b01 + + + High + Инициализация работы канала + 0b010 + + + Very_high + Инициализация работы канала + 0b11 + + + + + READ_MODE + Режим адреса источника + [3:3] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + WRITE_MODE + Режим адреса назначения + [4:4] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + READ_INCREMENT + Инкремент адреса источника + [5:5] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + WRITE_INCREMENT + Инкремент адреса назначения + [6:6] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + READ_SIZE + Разрядность адреса источника. +Должно быть кратно data_len + [8:7] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + WRITE_SIZE + Разрядность адреса назначения. +Должно быть кратно LEN + [10:9] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + READ_BURST_SIZE + Количество байт в пакете. +Определяется как 2^read_block_size. +Должно быть кратно read_size. + [13:11] + read-write + + + WRITE_BURST_SIZE + Количество байт в пакете. +Определяется как 2^write_block_size. +Должно быть кратно write_size. + [16:14] + read-write + + + READ_REQUEST + Выбор периферийной линии источника + [20:17] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + WRITE_REQUEST + Выбор периферийной линии назначения + [24:21] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + READ_ACK_EN + Разрешение работы логики с откликом для адресата источника + [25:25] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + WRITE_ACK_EN + Разрешение работы логики с откликом для адресата назначения + [26:26] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + IRQ_EN + Разрешение формирования прерывания по завершении работы канала: + 0 – прерывание не формируется; + 1 – прерывание формируется + [27:27] + read-write + + + Disable + Прерывание не формируется + 0 + + + Enable + Прерывание формируется + 1 + + + + + + + CH3_DST + Регистр адреса назначения канала 3 + 0x20 + read-write + 0x00000000 + 0xFFFFFFFF + + + Dst + Адрес назначения. +В режиме чтения текущего статуса (Current_valuе=1) возвращает последнюю переданную подзадачу контроллера канала. +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса + [31:0] + read-write + + + + + CH3_SRC + Регистр адреса источника канала 3 + 0x24 + read-write + 0x00000000 + 0xFFFFFFFF + + + Src + Адрес источника + +В режиме чтения текущего статуса (Current_valuе=1) возвращает текущую подзадачу контроллера канала. Указатель на адрес блока, который обрабатывается вычисляется как: +Current_ch_read_task - 2^READ_BURST_SIZE + +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса, вернувшего HRESP=1 + + [31:0] + read-write + + + + + CH3_LEN + Регистр размера передаваемых данных канала 3 + 0x28 + read-write + 0x00000000 + 0xFFFFFFFF + + + Data_Len + Количество байт пересылки рассчитывается как LEN +1 + +В режиме чтения текущего статуса (Current_valuе=1) возвращает счётчик байт подзадач контроллера. Счётчик байт подзадач обновляется только по подзадачам записи. Кол-во байт в блоках, которые удалось записать вычисляется как: +If (state==write): LEN - 2^WRITE_BURST_SIZE +If (state==read): Current byte len + [31:0] + read-write + + + + + CH3_CFG + Регистр управления и конфигурации канала 3 + 0x2C + read-write + 0x00000000 + 0xFFFFFFFF + + + ENABLE + Разрешение работы канала + [0:0] + read-write + + + Stop + Принудительная остановка + 0b00 + + + Start + Инициализация работы канала + 0b01 + + + + + PRIOR + Приоритет канала + [2:1] + read-write + + + Low + Принудительная остановка + 0b00 + + + Medium + Инициализация работы канала + 0b01 + + + High + Инициализация работы канала + 0b010 + + + Very_high + Инициализация работы канала + 0b11 + + + + + READ_MODE + Режим адреса источника + [3:3] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + WRITE_MODE + Режим адреса назначения + [4:4] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + READ_INCREMENT + Инкремент адреса источника + [5:5] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + WRITE_INCREMENT + Инкремент адреса назначения + [6:6] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + READ_SIZE + Разрядность адреса источника. +Должно быть кратно data_len + [8:7] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + WRITE_SIZE + Разрядность адреса назначения. +Должно быть кратно LEN + [10:9] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + READ_BURST_SIZE + Количество байт в пакете. +Определяется как 2^read_block_size. +Должно быть кратно read_size. + [13:11] + read-write + + + WRITE_BURST_SIZE + Количество байт в пакете. +Определяется как 2^write_block_size. +Должно быть кратно write_size. + [16:14] + read-write + + + READ_REQUEST + Выбор периферийной линии источника + [20:17] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + WRITE_REQUEST + Выбор периферийной линии назначения + [24:21] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + READ_ACK_EN + Разрешение работы логики с откликом для адресата источника + [25:25] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + WRITE_ACK_EN + Разрешение работы логики с откликом для адресата назначения + [26:26] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + IRQ_EN + Разрешение формирования прерывания по завершении работы канала: + 0 – прерывание не формируется; + 1 – прерывание формируется + [27:27] + read-write + + + Disable + Прерывание не формируется + 0 + + + Enable + Прерывание формируется + 1 + + + + + + + CH4_DST + Регистр адреса назначения канала 4 + 0x30 + read-write + 0x00000000 + 0xFFFFFFFF + + + Dst + Адрес назначения. +В режиме чтения текущего статуса (Current_valuе=1) возвращает последнюю переданную подзадачу контроллера канала. +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса + [31:0] + read-write + + + + + CH4_SRC + Регистр адреса источника канала 4 + 0x34 + read-write + 0x00000000 + 0xFFFFFFFF + + + Src + Адрес источника + +В режиме чтения текущего статуса (Current_valuе=1) возвращает текущую подзадачу контроллера канала. Указатель на адрес блока, который обрабатывается вычисляется как: +Current_ch_read_task - 2^READ_BURST_SIZE + +В случае ошибки записи содержит указатель на текущий адрес мастер-интерфейса, вернувшего HRESP=1 + + [31:0] + read-write + + + + + CH4_LEN + Регистр размера передаваемых данных канала 4 + 0x38 + read-write + 0x00000000 + 0xFFFFFFFF + + + Data_Len + Количество байт пересылки рассчитывается как LEN +1 + +В режиме чтения текущего статуса (Current_valuе=1) возвращает счётчик байт подзадач контроллера. Счётчик байт подзадач обновляется только по подзадачам записи. Кол-во байт в блоках, которые удалось записать вычисляется как: +If (state==write): LEN - 2^WRITE_BURST_SIZE +If (state==read): Current byte len + [31:0] + read-write + + + + + CH4_CFG + Регистр управления и конфигурации канала 4 + 0x3C + read-write + 0x00000000 + 0xFFFFFFFF + + + ENABLE + Разрешение работы канала + [0:0] + read-write + + + Stop + Принудительная остановка + 0b00 + + + Start + Инициализация работы канала + 0b01 + + + + + PRIOR + Приоритет канала + [2:1] + read-write + + + Low + Принудительная остановка + 0b00 + + + Medium + Инициализация работы канала + 0b01 + + + High + Инициализация работы канала + 0b010 + + + Very_high + Инициализация работы канала + 0b11 + + + + + READ_MODE + Режим адреса источника + [3:3] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + WRITE_MODE + Режим адреса назначения + [4:4] + read-write + + + Periphery + Принудительная остановка + 0b00 + + + Memory + Инициализация работы канала + 0b01 + + + + + READ_INCREMENT + Инкремент адреса источника + [5:5] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + WRITE_INCREMENT + Инкремент адреса назначения + [6:6] + read-write + + + No_increment + Нет инкремента + 0b00 + + + Increment + Есть инкремент + 0b01 + + + + + READ_SIZE + Разрядность адреса источника. +Должно быть кратно data_len + [8:7] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + WRITE_SIZE + Разрядность адреса назначения. +Должно быть кратно LEN + [10:9] + read-write + + + Byte + Байт + 0b00 + + + 2Byte + Полуслово + 0b01 + + + 4Byte + Слово + 0b10 + + + + + READ_BURST_SIZE + Количество байт в пакете. +Определяется как 2^read_block_size. +Должно быть кратно read_size. + [13:11] + read-write + + + WRITE_BURST_SIZE + Количество байт в пакете. +Определяется как 2^write_block_size. +Должно быть кратно write_size. + [16:14] + read-write + + + READ_REQUEST + Выбор периферийной линии источника + [20:17] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + WRITE_REQUEST + Выбор периферийной линии назначения + [24:21] + read-write + + + USART_0 + Линия запросов от USART_0 + 0 + + + USART_1 + Линия запросов от USART_1 + 1 + + + Crypto + Линия запросов от крипто-блока + 2 + + + SPI_0 + Линия запросов от SPI_0 + 3 + + + SPI_1 + Линия запросов от SPI_1 + 4 + + + I2C_0 + Линия запросов от I2C_0 + 5 + + + I2C_1 + Линия запросов от I2C_1 + 6 + + + SPIFI + Линия запросов от SPIFI + 7 + + + Timer32_1 + Линия запросов от Timer32_1 + 8 + + + Timer32_2 + Линия запросов от Timer32_2 + 9 + + + DAC0 + Линия запросов от DAC0 + 10 + + + DAC1 + Линия запросов от DAC1 + 11 + + + Timer32_0 + Линия запросов от Timer32_0 + 12 + + + + + READ_ACK_EN + Разрешение работы логики с откликом для адресата источника + [25:25] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + WRITE_ACK_EN + Разрешение работы логики с откликом для адресата назначения + [26:26] + read-write + + + Disable + Запрещено + 0 + + + Enable + Разрешено + 1 + + + + + IRQ_EN + Разрешение формирования прерывания по завершении работы канала: + 0 – прерывание не формируется; + 1 – прерывание формируется + [27:27] + read-write + + + Disable + Прерывание не формируется + 0 + + + Enable + Прерывание формируется + 1 + + + + + + + CONFIG + Регистр прерываний и настройки контроллера + 0x40 + write-only + 0x00000000 + 0xFFFFFFFF + + + CLEAR_LOCAL_IRQ + Очистка локального прерывания + [3:0] + write-only + + + CLEAR_GLOBAL_IRQ + Очистка глобального прерывания: +«1» – снятие запроса на прерывание + [4:4] + write-only + + + CLEAR_ERROR_IRQ + Очистка прерывания ошибки: +«1» – снятие запроса на прерывание + [5:5] + write-only + + + 0b0 + 0b1 + + + + + GLOBAL_IRQ_ENA + Разрешение формирования глобального прерывания + [6:6] + write-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ERROR_IRQ_ENA + Разрешение формирования прерывания при ошибке + [7:7] + write-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CURRENT_VALUE + Разрешение чтения текущего статуса канала + [8:8] + write-only + + + Disable + Разрешено (текущие значения) + 0b00 + + + Enable + Запрещено (значения при настройке) + 0b01 + + + + + + + STATUS + Регистр прерываний и настройки контроллера + 0x40 + read-only + 0x00000000 + 0xFFFFFFFF + + + CHANNEL_READY + Статус состояния каналов: +«1» - готов к работе; +«0» - занят + +В режиме чтения текущего статуса (Current_valuе=1) возвращает: +[0] - состояния ошибки при чтении (0 – ошибки не было; 1 – была зафиксирована ошибка шины при чтении) +[1] - состояния ошибки при записи (0 – ошибки не было; 1 – была зафиксирована ошибка шины при записи) +[3:2] состояния статуса контроллера канала (2’b01 – канал в состоянии чтения; 2’b10 – канала в состоянии записи) + [3:0] + read-only + + + CHANNEL1_IRQ + Статус прерываний: +«1» - есть прерывания; +«0» - нет прерываний + [4:4] + read-only + + + CHANNEL2_IRQ + Статус прерываний: +«1» - есть прерывания; +«0» - нет прерываний + [5:5] + read-only + + + CHANNEL3_IRQ + Статус прерываний: +«1» - есть прерывания; +«0» - нет прерываний + [6:6] + read-only + + + CHANNEL4_IRQ + Статус прерываний: +«1» - есть прерывания; +«0» - нет прерываний + [7:7] + read-only + + + CHANNEL1_BUS_ERROR + Статус состояния каналов при ошибках на шине: +«1» - есть ошибка; +«0» - нет ошибки + [8:8] + read-only + + + CHANNEL2_BUS_ERROR + Статус состояния каналов при ошибках на шине: +«1» - есть ошибка; +«0» - нет ошибки + [9:9] + read-only + + + CHANNEL3_BUS_ERROR + Статус состояния каналов при ошибках на шине: +«1» - есть ошибка; +«0» - нет ошибки + [10:10] + read-only + + + CHANNEL4_BUS_ERROR + Статус состояния каналов при ошибках на шине: +«1» - есть ошибка; +«0» - нет ошибки + [11:11] + read-only + + + + + + + PM + Блок управления питанием и тактированием + 0x00050000 + + 0x00 + 0x40 + registers + + + + DIV_AHB + Задает значение делителя шины AHB. Частота шины AHB (FAHB) рассчитывается, как +FSYS/( DIV_AHB+1) + 0x00 + read-write + 0x00 + 0xFFFFFFFF + + + DIV_APB_M + Задает значение делителя шины APB_M. Частота шины APB_M (FAPM_M) рассчитывается, как +FAPB/( Div_APM_M+1) + 0x04 + + + DIV_APB_P + Задает значение делителя шины APB_P. Частота шины APB_P (FAPM_P) рассчитывается, как +FAPB/( Div_APM_P+1) + 0x08 + + + CLK_AHB_SET + Регистр включения тактированием устройств на шине AHB + 0x0C + read-write + 0x1F + 0xFFFFFFFF + + + Core + Ядро + [0:0] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + EEPROM + EEPROM + [1:1] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + RAM + RAM + [2:2] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + SPIFI + SPIFI + [3:3] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + TCB + TCB + [4:4] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + DMA + DMA + [5:5] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Crypto + Crypto + [6:6] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + CRC32 + CRC32 + [7:7] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + + + CLK_AHB_CLEAR + Регистр выключения тактированием устройств на шине AHB. Каждому биту соответствует устройство, аналогично CLK_AHB_SET + 0x10 + read-write + 0x00 + 0xFFFFFFFF + + + Core + Ядро + [0:0] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + EEPROM + EEPROM + [1:1] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + RAM + RAM + [2:2] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + SPIFI + SPIFI + [3:3] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + TCB + TCB + [4:4] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + DMA + DMA + [5:5] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Crypto + Crypto + [6:6] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + CRC32 + CRC32 + [7:7] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + + + CLK_APB_M_SET + Регистр включения тактированием устройств на шине APB_M. Каждому биту соответствует устройство + 0x14 + read-write + 0x89 + 0xFFFFFFFF + + + PM + Блок управления питанием (PM - Power Monitor) + [0:0] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + EPIC + Контроллер прерываний + [1:1] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer32_0 + Таймер32_0 + [2:2] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Pad_config + Контроллер выводов + [3:3] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + WDT_BUS + Сторожевой таймер шины + [4:4] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + OTP + OTP + [5:5] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + PVD + Монитор питания системного домена + [6:6] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + WU + Блок WakeUp (WU) батарейного домена + [7:7] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + RTC + RTC батарейного домена + [8:8] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + + + CLK_APB_M_CLEAR + Регистр выключения тактированием устройств на шине APB_M. Каждому биту соответствует устройство, аналогично Clk_APB_M_Set + 0x18 + read-write + 0x0 + 0xFFFFFFFF + + + PM + Блок управления питанием (PM - Power Monitor) + [0:0] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + EPIC + Контроллер прерываний + [1:1] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer32_0 + Таймер32_0 + [2:2] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Pad_config + Контроллер выводов + [3:3] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + WDT_BUS + Сторожевой таймер шины + [4:4] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + OTP + OTP + [5:5] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + PVD + Монитор питания системного домена + [6:6] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + WU + Блок WakeUp (WU) батарейного домена + [7:7] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + RTC + RTC батарейного домена + [8:8] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + + + CLK_APB_P_SET + Регистр включения тактированием устройств на шине APB_P. Каждому биту соответствует одно устройство + 0x1C + read-write + 0x0 + 0xFFFFFFFF + + + WDT + Сторожевой таймер + [0:0] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + UART_0 + UART_0 + [1:1] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + UART_1 + UART_1 + [2:2] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer16_0 + Timer16_0 + [3:3] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer16_1 + Timer16_1 + [4:4] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer16_2 + Timer16_2 + [5:5] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer32_1 + Timer32_1 + [6:6] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Timer32_2 + Timer32_2 + [7:7] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + SPI_0 + SPI_0 + [8:8] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + SPI_1 + SPI_1 + [9:9] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + I2C_0 + I2C_0 + [10:10] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + I2C_1 + I2C_1 + [11:11] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + GPIO_0 + GPIO_0 + [12:12] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + GPIO_1 + GPIO_1 + [13:13] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + GPIO_2 + GPIO_2 + [14:14] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + Analog_regs + Регистры аналоговых блоков + [15:15] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + GPIO_IRQ + Схема формирования прерываний GPIO + [16:16] + read-write + + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + + + + CLK_APB_P_CLEAR + Регистр выключения тактированием устройств на шине APB_P. Каждому биту соответствует устройство, аналогично CLK_APB_P_SET + 0x20 + read-write + 0x0 + 0xFFFFFFFF + + + WDT + Сторожевой таймер + [0:0] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + UART_0 + UART_0 + [1:1] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + UART_1 + UART_1 + [2:2] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer16_0 + Timer16_0 + [3:3] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer16_1 + Timer16_1 + [4:4] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer16_2 + Timer16_2 + [5:5] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer32_1 + Timer32_1 + [6:6] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Timer32_2 + Timer32_2 + [7:7] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + SPI_0 + SPI_0 + [8:8] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + SPI_1 + SPI_1 + [9:9] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + I2C_0 + I2C_0 + [10:10] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + I2C_1 + I2C_1 + [11:11] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + GPIO_0 + GPIO_0 + [12:12] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + GPIO_1 + GPIO_1 + [13:13] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + GPIO_2 + GPIO_2 + [14:14] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + Analog_regs + Регистры аналоговых блоков + [15:15] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + GPIO_IRQ + Схема формирования прерываний GPIO + [16:16] + read-write + + read + + Disable + Тактирование выключено + 0b00 + + + Enable + Тактирование включено + 0b01 + + + + write + + Disable + Тактирование выключено + 0b01 + + + Enable + Тактирование включено + 0b00 + + + + + + + AHB_MUX + Настройка источника тактирования системы + 0x24 + read-write + 0x0 + 0xFFFFFFFF + + + AHB_CLK_MUX + Источника тактирования системы + [1:0] + read-write + + + OSC32M + Внешний OSC32M + 0x00 + + + HSI32M + Внутренний HSI32M + 0x01 + + + OSC32K + Внешний OSC32K + 0x02 + + + LSI32K + Внутренний LSI32К + 0x03 + + + + + FORCE_MUX + Запрет на принудительное переключение с выбранного источника тактирования при пропадании тактирования + [2:2] + read-write + + + Unfixed + Разрешение автоматической смены частоты + 0b00 + + + Fixed + Запрет автоматической смены частоты + 0b01 + + + + + + + WDT_CLK_MUX + Выбор источника тактирования сторожевого таймера: +0 – внешний OSC32M; +1 – внутренний HSI32M; +2 – внешний OSC32K; +3 – внутренний LSI32К; + 0x28 + read-write + 0x0 + 0xFFFFFFFF + + + WDT_CLK_MUX + Выбор источника тактирования сторожевого таймера + [1:0] + read-write + + + OSC32M + Внешний OSC32M + 0x00 + + + HSI32M + Внутренний HSI32M + 0x01 + + + OSC32K + Внешний OSC32K + 0x02 + + + LSI32K + Внутренний LSI32К + 0x03 + + + + + + + CPU_RTC_CLK_MUX + Выбор источника тактирования RTC для системного таймера в составе ядра + 0x2C + read-write + 0x0 + 0xFFFFFFFF + + + CPU_RTC_CLK_MUX + Выбор источника тактирования сторожевого таймера + [0:0] + read-write + + + OSC32K + Внешний OSC32K + 0x00 + + + LSI32K + Внутренний LSI32К + 0x01 + + + + + + + TIMER_CFG + Выбор источника тактирования для таймеров + 0x30 + read-write + 0x0 + 0xFFFFFFFF + + + MUX_TIM32_0_TIM1 + Выбор синхронного тактового сигнала для входа TIM1 Timer32_0 + [0:0] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0b00 + + + HCLK + Частота шины AHB (hclk) + 0b01 + + + + + MUX_TIM32_0_TIM2 + Выбор асинхронного тактового сигнала для входа TIM2 Timer32_0 + [1:1] + read-write + + + OSC32K + OSC32K + 0b00 + + + LSI32K + LSI32K + 0b01 + + + + + MUX_TIM32_1_TIM1 + Выбор синхронного тактового сигнала для входа TIM1 Timer32_1 + [3:3] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0b00 + + + HCLK + Частота шины AHB (hclk) + 0b01 + + + + + MUX_TIM32_1_TIM2 + Выбор асинхронного тактового сигнала для входа TIM2 Timer32_1 + [4:4] + read-write + + + OSC32K + OSC32K + 0b00 + + + LSI32K + LSI32K + 0b01 + + + + + MUX_TIM32_2_TIM1 + Выбор синхронного тактового сигнала для входа TIM1 Timer32_2 + [6:6] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0b00 + + + HCLK + Частота шины AHB (hclk) + 0b01 + + + + + MUX_TIM32_2_TIM2 + Выбор асинхронного тактового сигнала для входа TIM2 Timer32_2 + [7:7] + read-write + + + OSC32K + OSC32K + 0b00 + + + LSI32K + LSI32K + 0b01 + + + + + MUX_TIM16_0 + Выбор тактового сигнала для Timer16_0 + [11:9] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0x0 + + + HCLK + Частота шины AHB (hclk) + 0x1 + + + OSC32M + Частота внешнего осциллятора OSC32М + 0x2 + + + HSI32M + Частота встроенного осциллятора HSI32M + 0x3 + + + OSC32K + частота внешнего осциллятора OSC32К + 0x4 + + + LSI32K + Частота встроенного осциллятора LSI32K + 0x5 + + + + + MUX_TIM16_1 + Выбор тактового сигнала для Timer16_1 + [14:12] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0x0 + + + HCLK + Частота шины AHB (hclk) + 0x1 + + + OSC32M + Частота внешнего осциллятора OSC32М + 0x2 + + + HSI32M + Частота встроенного осциллятора HSI32M + 0x3 + + + OSC32K + частота внешнего осциллятора OSC32К + 0x4 + + + LSI32K + Частота встроенного осциллятора LSI32K + 0x5 + + + + + MUX_TIM16_2 + Выбор тактового сигнала для Timer16_2 + [17:15] + read-write + + + SYS_CLK + Системная частота (sys_clk) + 0x0 + + + HCLK + Частота шины AHB (hclk) + 0x1 + + + OSC32M + Частота внешнего осциллятора OSC32М + 0x2 + + + HSI32M + Частота встроенного осциллятора HSI32M + 0x3 + + + OSC32K + частота внешнего осциллятора OSC32К + 0x4 + + + LSI32K + Частота встроенного осциллятора LSI32K + 0x5 + + + + + + + FREQ_MASK + Настройки прерываний монитора частоты + 0x34 + read-write + 0x0 + 0xFFFFFFFF + + + MASK_LSI32K + Разрешение прерывания при пропадании частоты LSI32K + [0:0] + read-write + + + Disable + Запретить прерывание + 0b00 + + + Enable + Разрешить прерывание + 0b01 + + + + + MASK_OSC32K + Разрешение прерывания при пропадании частоты внешнего осциллятора 32 кГц + [1:1] + read-write + + + Disable + Запретить прерывание + 0b00 + + + Enable + Разрешить прерывание + 0b01 + + + + + MASK_HSI32M + Разрешение прерывания при пропадании частоты HSI32M + [2:2] + read-write + + + Disable + Запретить прерывание + 0b00 + + + Enable + Разрешить прерывание + 0b01 + + + + + MASK_OSC32M + Разрешение прерывания при пропадании частоты внешнего осциллятора 32 МГц + [3:3] + read-write + + + Disable + Запретить прерывание + 0b00 + + + Enable + Разрешить прерывание + 0b01 + + + + + + + FREQ_STATUS + Статус монитора частоты + 0x38 + read-write + 0x0 + 0xFFFFFFFF + + + MASK_LSI32K + Статус частоты LSI32K + [0:0] + read-only + + + MASK_OSC32K + Статус частоты внешнего осциллятора 32 кГц OSC32K + [1:1] + read-only + + + MASK_HSI32M + Статус частоты HSI32M + [2:2] + read-only + + + MASK_OSC32M + Статус частоты внешнего осциллятора 32 МГц OSC32M + [3:3] + read-only + + + + + SLEEP_MODE + Переход в спящий режим осуществляется записью в данный регистр. При записи отключается тактирование ядра. В зависимости от записываемого значения отключается тактирование модулей + + 0x3C + read-write + 0x0 + 0xFFFFFFFF + + + EEPROM + Отключение тактирования EEPROM + [0:0] + read-write + + + RAM + Отключение тактирования ОЗУ + [1:1] + read-write + + + SPIFI + Отключение тактирования контроллера SPIFI + [2:2] + read-write + + + + + + + EPIC + Программируемый контроллер прерываний + 0x00050400 + + 0x00 + 0x24 + registers + + + + MASK_EDGE_SET + При чтении – текущее состоянии масок прерываний по фронту. При записи, «1» разрешает прерывание по фронту соответствующего источника прерываний. + 0x00 + read-write + 0x00000000 + 0xFFFFFFFF + oneToSet + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + GPIO + Линия прерывания GPIO + [5:5] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + RTC + Линия прерывания RTC + [15:15] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DMA + Линия прерывания ПДП + [20:20] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + ADC + Линия прерывания АЦП + [29:29] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + + + MASK_EDGE_CLEAR + Установка маски прерываний по фронту + 0x04 + read-write + 0x00000000 + 0xFFFFFFFF + oneToClear + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + GPIO + Линия прерывания GPIO + [5:5] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + RTC + Линия прерывания RTC + [15:15] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DMA + Линия прерывания ПДП + [20:20] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + ADC + Линия прерывания АЦП + [29:29] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-write + + + Disable + Прерывание по фронту запрешено + 0b00 + + + Enable + Прерывание по фронту разрешено + 0b01 + + + + + + + MASK_LEVEL_SET + Установка маски прерываний по уровню + 0x08 + write-only + 0x00000000 + 0xFFFFFFFF + oneToSet + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-write + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-write + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-write + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-write + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-write + + + GPIO + Линия прерывания GPIO + [5:5] + read-write + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-write + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-write + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-write + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-write + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-write + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-write + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-write + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-write + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-write + + + RTC + Линия прерывания RTC + [15:15] + read-write + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-write + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-write + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-write + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-write + + + DMA + Линия прерывания ПДП + [20:20] + read-write + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-write + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-write + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-write + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-write + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-write + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-write + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-write + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-write + + + ADC + Линия прерывания АЦП + [29:29] + read-write + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-write + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-write + + + + + MASK_LEVEL_CLEAR + Сброс маски прерываний по уровню + 0x0C + write-only + 0x00000000 + 0xFFFFFFFF + oneToClear + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-write + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-write + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-write + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-write + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-write + + + GPIO + Линия прерывания GPIO + [5:5] + read-write + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-write + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-write + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-write + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-write + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-write + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-write + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-write + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-write + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-write + + + RTC + Линия прерывания RTC + [15:15] + read-write + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-write + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-write + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-write + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-write + + + DMA + Линия прерывания ПДП + [20:20] + read-write + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-write + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-write + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-write + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-write + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-write + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-write + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-write + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-write + + + ADC + Линия прерывания АЦП + [29:29] + read-write + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-write + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-write + + + + + CLEAR + Сброс флагов в статусе прерываний + 0x18 + write-only + 0x00000000 + 0xFFFFFFFF + oneToClear + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-write + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-write + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-write + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-write + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-write + + + GPIO + Линия прерывания GPIO + [5:5] + read-write + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-write + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-write + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-write + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-write + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-write + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-write + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-write + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-write + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-write + + + RTC + Линия прерывания RTC + [15:15] + read-write + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-write + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-write + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-write + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-write + + + DMA + Линия прерывания ПДП + [20:20] + read-write + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-write + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-write + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-write + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-write + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-write + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-write + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-write + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-write + + + ADC + Линия прерывания АЦП + [29:29] + read-write + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-write + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-write + + + + + STATUS + Статус прерываний + 0x1C + read-only + 0x00000000 + 0xFFFFFFFF + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-only + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-only + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-only + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-only + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-only + + + GPIO + Линия прерывания GPIO + [5:5] + read-only + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-only + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-only + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-only + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-only + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-only + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-only + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-only + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-only + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-only + + + RTC + Линия прерывания RTC + [15:15] + read-only + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-only + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-only + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-only + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-only + + + DMA + Линия прерывания ПДП + [20:20] + read-only + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-only + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-only + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-only + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-only + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-only + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-only + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-only + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-only + + + ADC + Линия прерывания АЦП + [29:29] + read-only + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-only + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-only + + + + + RAW_STATUS + Текущее состоянии линий прерываний + 0x20 + read-only + 0x00000000 + 0x00000000 + + + Timer32_0 + Линия прерывания Timer32_0 + [0:0] + read-only + + + USART_0 + Линия прерывания USART_0 + [1:1] + read-only + + + USART_1 + Линия прерывания USART_1 + [2:2] + read-only + + + SPI_0 + Линия прерывания SPI_0 + [3:3] + read-only + + + SPI_1 + Линия прерывания SPI_1 + [4:4] + read-only + + + GPIO + Линия прерывания GPIO + [5:5] + read-only + + + I2C_0 + Линия прерывания I2C_0 + [6:6] + read-only + + + I2C_1 + Линия прерывания I2C_1 + [7:7] + read-only + + + WDT + Линия прерывания сторожевого таймера (WDT) + [8:8] + read-only + + + Timer16_0 + Линия прерывания Timer16_0 + [9:9] + read-only + + + Timer16_1 + Линия прерывания Timer16_1 + [10:10] + read-only + + + Timer16_2 + Линия прерывания Timer16_2 + [11:11] + read-only + + + Timer32_1 + Линия прерывания Timer32_1 + [12:12] + read-only + + + Timer32_2 + Линия прерывания Timer32_2 + [13:13] + read-only + + + SPIFI + Линия прерывания SPIFI + [14:14] + read-only + + + RTC + Линия прерывания RTC + [15:15] + read-only + + + EEPROM + Линия прерывания EEPROM + [16:16] + read-only + + + WDT_BUS_DOM3 + Линия прерывания сторожевого таймера шины (периферийные устройства) + [17:17] + read-only + + + WDT_BUS_SPIFI + Линия прерывания сторожевого таймера шины (SPIFI) + [18:18] + read-only + + + WDT_BUS_EEPROM + Линия прерывания сторожевого таймера шины (EEPROM) + [19:19] + read-only + + + DMA + Линия прерывания ПДП + [20:20] + read-only + + + Frequency_monitor + Линия прерывания монитора частоты + [21:21] + read-only + + + PVD_AVCC_under + Линия прерывания монитора напряжения AVCC (ниже порога) + [22:22] + read-only + + + PVD_AVCC_over + Линия прерывания монитора напряжения AVCC (выше порога) + [23:23] + read-only + + + PVD_VCC_under + Линия прерывания монитора напряжения VCC (ниже порога) + [24:24] + read-only + + + PVD_VCC_over + Линия прерывания монитора напряжения VCC (выше порога) + [25:25] + read-only + + + BATTERY_NON_GOOD + Линия прерывания недостаточного напряжения батареи + [26:26] + read-only + + + BOR + Линия прерывания BrouwnOut детектора + [27:27] + read-only + + + TSENS + Линия прерывания монитора температуры + [28:28] + read-only + + + ADC + Линия прерывания АЦП + [29:29] + read-only + + + DAC0 + Линия прерывания ЦАП0 + [30:30] + read-only + + + DAC1 + Линия прерывания ЦАП1 + [31:31] + read-only + + + + + + + TIMER32_0 + регистры модуля таймера_0 + 0x00050800 + + 0 + 0x20 + registers + + + + VALUE + 0x00 + + + TIM_VAL + текущее значение счетчика + [31:0] + read-only + + + + + TOP + максимальное значение счетной последовательности + 0x04 + 0xFFFFFFFF + 0xFFFFFFFF + + + TIM_TOP + максимальное значение счетчика (ограничивает счетную последовательность сверху) + [31:0] + read-write + + + + + PRESCALE + значение делителя + 0x08 + 0x0 + 0xFFFFFFFF + + + TIM_PRESCALE + Значение предварительного делителя. Предделитель вырабатывает тактовый сигнал для счета, частота которого в целое раз меньше входной + [31:0] + read-write + + + + + CONTROL + Конфигурационный регистр основного таймера + 0x0C + 0x0 + 0x0 + + + SOURSE + Выбор источника тактового сигнала для счета + [3:2] + read-write + + + TIM1 + Вход модуля TIM1 + 0b00 + + + TIM2 + Вход модуля TIM2 + 0b10 + + + TIM3 + Выход предделителя + 0b11 + + + + + COUNT_MODE + Режим счёта таймера + [1:0] + read-write + + + Direct + Прямой режим + 0b00 + + + Reverse + Обратный режим + 0b01 + + + Bidirectional + Двунаправленный режим + 0b10 + + + + + Reserved + Зарезервировано + [31:4] + + + + + ENABLE + Регистр включения таймера + 0x10 + 0x0 + 0xFFFFFFFF + + + TIM_CLR + Сброс (обнуление) текущего значения счетчика при записи «1» + [1:1] + writeOnce + + + TIM_EN + Запуск/остановка работы счетчика + [0:0] + read-write + + + Disable + Счетчик выключен + 0b00 + + + Enable + Счетчик работает + 0b01 + + + + + Reserved + Зарезервировано + [31:2] + + + + + INT_MASK + Регистр маски прерываний + 0x14 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Маска прерывания совпадения 4 канала таймера + [9:9] + read-write + + + OC_Int_CH3 + Маска прерывания совпадения 3 канала таймера + [8:8] + read-write + + + OC_Int_CH2 + Маска прерывания совпадения 2 канала таймера + [7:7] + read-write + + + OC_Int_CH1 + Маска прерывания совпадения 1 канала таймера + [6:6] + read-write + + + IC_Int_CH4 + Маска прерывания захвата 4 канала таймера + [5:5] + read-write + + + IC_Int_CH3 + Маска прерывания захвата 3 канала таймера + [4:4] + read-write + + + IC_Int_CH2 + Маска прерывания захвата 2 канала таймера + [3:3] + read-write + + + IC_Int_CH1 + Маска прерывания захвата 1 канала таймера + [2:2] + read-write + + + UDF_Int + Маска прерывания опустошения счетчика + [1:1] + read-write + + + OVF_Int + Маска прерывания по переполнению счетчика + [0:0] + read-write + + + + + INT_CLEAR + Регистр сброса флагов прерываний + 0x18 + C + 0xFFFFFFFF + + + INT_FLAG + Регистр флагов прерываний + 0x1C + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Статус прерывания совпадения 4 канала таймера + [9:9] + read-only + + + OC_Int_CH3 + Статус прерывания совпадения 3 канала таймера + [8:8] + read-only + + + OC_Int_CH2 + Статус прерывания совпадения 2 канала таймера + [7:7] + read-only + + + OC_Int_CH1 + Статус прерывания совпадения 1 канала таймера + [6:6] + read-only + + + IC_Int_CH4 + Статус прерывания захвата 4 канала таймера + [5:5] + read-only + + + IC_Int_CH3 + Статус прерывания захвата 3 канала таймера + [4:4] + read-only + + + IC_Int_CH2 + Статус прерывания захвата 2 канала таймера + [3:3] + read-only + + + IC_Int_CH1 + Статус прерывания захвата 1 канала таймера + [2:2] + read-only + + + UDF_Int + Статус прерывания опустошения счетчика + [1:1] + read-only + + + OVF_Int + Статус прерывания по переполнению счетчика + [0:0] + read-only + + + + + + + PVD_VCC + Управление монитором напряжения VCC + 0x00051800 + + 0x00 + 0x0C + registers + + + + DPF_VALUE + Настройка цифрового фильтра + 0x0 + read-write + 1500 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:16] + + + DPF + Коэффициент, определяющий длительность отфильтровываемых импульсов (на системной частоте) + [7:0] + read-write + + + + + CONFIG + Регистр настроек + 0x04 + read-write + 0x1 + 0xFFFFFFFF + + + EN_VREFCLB + Использование в качестве опорного источника напряжения каллибруемый ОИН + [12:12] + read-write + + + OVER_THRESH + Верхний порог срабатывания монитора + [11:8] + read-write + + + UNDER_THRESH + Нижний порог срабатывания монитора + [7:4] + read-write + + + TESTMODE + Переход в тестовый режим + [3:3] + read-write + + + NRESETO + Отключение (сброс) детектирования вехнего порога + [2:2] + read-write + + + Reset + Детектирование не выполняется, схема в состоянии сброса + 0b00 + + + Normal + Нормальная работа + 0b01 + + + + + NRESETU + Отключение (сброс) детектирования нижнего порога + [1:1] + read-write + + + Reset + Детектирование не выполняется, схема в состоянии сброса + 0b00 + + + Normal + Нормальная работа + 0b01 + + + + + PD + Управление питанием монитора + [0:0] + read-write + + + Enable + Монитор включен + 0b00 + + + Disable + Монитор выключен + 0b01 + + + + + + + STATUS + Регистр статуса + 0x08 + read-only + 0x0 + 0xFFFFFFFF + + + OUT_OVER_FLAG + Текущее состояние линии монитора верхнего порога с учетом цифровой фильтрации + [3:3] + read-only + + + OUT_UNDER_FLAG + Текущее состояние линии монитора нижнего порога с учетом цифровой фильтрации + [2:2] + read-only + + + OUT_OVER_VALUE + Текущее состояние линии монитора верхнего порога без цифровой фильтрации + [1:1] + read-only + + + OUT_UNDER_VALUE + Текущее состояние линии монитора нижнего порога без цифровой фильтрации + [0:0] + read-only + + + + + + + PAD_CONFIG + Модуль управления функцией ввода/вывода + 0x000050C00 + + 0x00 + 0x24 + registers + + + + PAD0_CFG + Управление функциями выводов PORT0 + 0x00 + read-write + 0x55400000 + 0xFFFFFFFF + + + Port_0_0 + Значения двух бит кодируют выбранный функционал для вывода + [1:0] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_1 + Значения двух бит кодируют выбранный функционал для вывода + [3:2] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_2 + Значения двух бит кодируют выбранный функционал для вывода + [5:4] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_3 + Значения двух бит кодируют выбранный функционал для вывода + [7:6] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_4 + Значения двух бит кодируют выбранный функционал для вывода + [9:8] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_5 + Значения двух бит кодируют выбранный функционал для вывода + [11:10] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_6 + Значения двух бит кодируют выбранный функционал для вывода + [13:12] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_7 + Значения двух бит кодируют выбранный функционал для вывода + [15:14] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_8 + Значения двух бит кодируют выбранный функционал для вывода + [17:16] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_9 + Значения двух бит кодируют выбранный функционал для вывода + [19:18] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_10 + Значения двух бит кодируют выбранный функционал для вывода + [21:20] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_11 + Значения двух бит кодируют выбранный функционал для вывода + [23:22] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_12 + Значения двух бит кодируют выбранный функционал для вывода + [25:24] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_13 + Значения двух бит кодируют выбранный функционал для вывода + [27:26] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_14 + Значения двух бит кодируют выбранный функционал для вывода + [29:28] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_0_15 + Значения двух бит кодируют выбранный функционал для вывода + [31:30] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + + + PAD0_DS + Управление нагрузочной способностью выводов PORT0 + 0x04 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_0_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_8 + Значения двух бит кодируют выбранный режим для вывода + [17:16] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_9 + Значения двух бит кодируют выбранный режим для вывода + [19:18] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_10 + Значения двух бит кодируют выбранный режим для вывода + [21:20] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_11 + Значения двух бит кодируют выбранный режим для вывода + [23:22] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_12 + Значения двух бит кодируют выбранный режим для вывода + [25:24] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_13 + Значения двух бит кодируют выбранный режим для вывода + [27:26] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_14 + Значения двух бит кодируют выбранный режим для вывода + [29:28] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_0_15 + Значения двух бит кодируют выбранный режим для вывода + [31:30] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + + + PAD0_PUPD + Управление резисторами подтяжки выводов PORT0 + 0x08 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_0_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_8 + Значения двух бит кодируют выбранный режим для вывода + [17:16] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_9 + Значения двух бит кодируют выбранный режим для вывода + [19:18] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_10 + Значения двух бит кодируют выбранный режим для вывода + [21:20] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_11 + Значения двух бит кодируют выбранный режим для вывода + [23:22] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_12 + Значения двух бит кодируют выбранный режим для вывода + [25:24] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_13 + Значения двух бит кодируют выбранный режим для вывода + [27:26] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_14 + Значения двух бит кодируют выбранный режим для вывода + [29:28] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_0_15 + Значения двух бит кодируют выбранный режим для вывода + [31:30] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + + + PAD1_CFG + Управление функциями выводов PORT1 + 0x0C + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_1_0 + Значения двух бит кодируют выбранный функционал для вывода + [1:0] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_1 + Значения двух бит кодируют выбранный функционал для вывода + [3:2] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_2 + Значения двух бит кодируют выбранный функционал для вывода + [5:4] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_3 + Значения двух бит кодируют выбранный функционал для вывода + [7:6] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_4 + Значения двух бит кодируют выбранный функционал для вывода + [9:8] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_5 + Значения двух бит кодируют выбранный функционал для вывода + [11:10] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_6 + Значения двух бит кодируют выбранный функционал для вывода + [13:12] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_7 + Значения двух бит кодируют выбранный функционал для вывода + [15:14] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_8 + Значения двух бит кодируют выбранный функционал для вывода + [17:16] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_9 + Значения двух бит кодируют выбранный функционал для вывода + [19:18] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_10 + Значения двух бит кодируют выбранный функционал для вывода + [21:20] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_11 + Значения двух бит кодируют выбранный функционал для вывода + [23:22] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_12 + Значения двух бит кодируют выбранный функционал для вывода + [25:24] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_13 + Значения двух бит кодируют выбранный функционал для вывода + [27:26] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_14 + Значения двух бит кодируют выбранный функционал для вывода + [29:28] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_1_15 + Значения двух бит кодируют выбранный функционал для вывода + [31:30] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + + + PAD1_DS + Управление нагрузочной способностью выводов PORT1 + 0x10 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_1_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_8 + Значения двух бит кодируют выбранный режим для вывода + [17:16] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_9 + Значения двух бит кодируют выбранный режим для вывода + [19:18] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_10 + Значения двух бит кодируют выбранный режим для вывода + [21:20] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_11 + Значения двух бит кодируют выбранный режим для вывода + [23:22] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_12 + Значения двух бит кодируют выбранный режим для вывода + [25:24] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_13 + Значения двух бит кодируют выбранный режим для вывода + [27:26] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_14 + Значения двух бит кодируют выбранный режим для вывода + [29:28] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_1_15 + Значения двух бит кодируют выбранный режим для вывода + [31:30] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + + + PAD1_PUPD + Управление резисторами подтяжки выводов PORT1 + 0x14 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_1_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_8 + Значения двух бит кодируют выбранный режим для вывода + [17:16] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_9 + Значения двух бит кодируют выбранный режим для вывода + [19:18] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_10 + Значения двух бит кодируют выбранный режим для вывода + [21:20] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_11 + Значения двух бит кодируют выбранный режим для вывода + [23:22] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_12 + Значения двух бит кодируют выбранный режим для вывода + [25:24] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_13 + Значения двух бит кодируют выбранный режим для вывода + [27:26] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_14 + Значения двух бит кодируют выбранный режим для вывода + [29:28] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_1_15 + Значения двух бит кодируют выбранный режим для вывода + [31:30] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + + + PAD2_CFG + Управление функциями выводов PORT2 + 0x18 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_2_0 + Значения двух бит кодируют выбранный функционал для вывода + [1:0] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_1 + Значения двух бит кодируют выбранный функционал для вывода + [3:2] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_2 + Значения двух бит кодируют выбранный функционал для вывода + [5:4] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_3 + Значения двух бит кодируют выбранный функционал для вывода + [7:6] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_4 + Значения двух бит кодируют выбранный функционал для вывода + [9:8] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_5 + Значения двух бит кодируют выбранный функционал для вывода + [11:10] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_6 + Значения двух бит кодируют выбранный функционал для вывода + [13:12] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + Port_2_7 + Значения двух бит кодируют выбранный функционал для вывода + [15:14] + read-write + + + Func1_GPIO + Первая функция (порт общего назначения) + 0b00 + + + Func2_interface + Вторая функция (последовательный интерфейс) + 0b01 + + + Func3_interface_or_timer + Третья функция (последовательный интерфейс или таймер) + 0b10 + + + Func4_Analog + Четвертая функция (аналоговый сигнал) + 0b11 + + + + + + + PAD2_DS + Управление нагрузочной способностью выводов PORT2 + 0x1C + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_2_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + Port_2_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + 2mA + Нагрузочная способность вывода 2мА + 0b00 + + + 4mA + Нагрузочная способность вывода 4мА + 0b01 + + + 8mA + Нагрузочная способность вывода 8мА + 0b1x + + + + + + + PAD2_PUPD + Управление резисторами подтяжки выводов PORT2 + 0x20 + read-write + 0x00000000 + 0xFFFFFFFF + + + Port_2_0 + Значения двух бит кодируют выбранный режим для вывода + [1:0] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_1 + Значения двух бит кодируют выбранный режим для вывода + [3:2] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_2 + Значения двух бит кодируют выбранный режим для вывода + [5:4] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_3 + Значения двух бит кодируют выбранный режим для вывода + [7:6] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_4 + Значения двух бит кодируют выбранный режим для вывода + [9:8] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_5 + Значения двух бит кодируют выбранный режим для вывода + [11:10] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_6 + Значения двух бит кодируют выбранный режим для вывода + [13:12] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + Port_2_7 + Значения двух бит кодируют выбранный режим для вывода + [15:14] + read-write + + + Pull_none + Без подтяжки + 0b00 + + + Pull_up + Подтяжка к питанию + 0b01 + + + Pull_down + Подтяжка к земле + 0b10 + + + + + + + + + WDT_BUS + Сторожевой таймер шины + 0x00051000 + + 0x00 + 0x0C + registers + + + + TIMEOUT + Определеяет количество циклов ожидания до формирования ошибки. Значения от 0 до 15. Количество циклов ожидания вычисляется как 2^TIMEOUT. + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + IRQ_CLEAR + Сброс прерываний + 0x04 + write-only + 0xFFFFFFFF + oneToClear + + + EEPROM + Сброс прерываний для монитора шины EEPROM + [2:2] + write-only + oneToClear + + + SPIFI + Сброс прерываний для монитора шины SPIFI + [1:1] + write-only + oneToClear + + + DOM3 + Сброс прерываний для монитора шины периферийных устройств + [0:0] + write-only + oneToClear + + + + + ENABLE + Запуск/отключение мониторов шины + 0x08 + read-write + 0 + 0xFFFFFFFF + + + EEPROM + Управление монитором шины EEPROM + [2:2] + read-write + + + Disable + Монитор шины выключен + 0b00 + + + Enable + Монитор шины включен + 0b01 + + + + + SPIFI + Управление монитором шины SPIFI + [1:1] + read-write + + + Disable + Монитор шины выключен + 0b00 + + + Enable + Монитор шины включен + 0b01 + + + + + DOM3 + Управление монитором шины периферийных устройств + [0:0] + read-write + + + Disable + Монитор шины выключен + 0b00 + + + Enable + Монитор шины включен + 0b01 + + + + + + + + + OTP + Контроллер блока однократно-программируемой памяти + 0x00051400 + + 0x00 + 0x20 + registers + + + + OTPDAT + Регистр чтения/записи данных + 0x00 + read-write + + + DATA + Сразу после выполнения записи в этот регистр будет запущена внутренняя процедура записи загруженных данных в массив antifuse OTP. Временные параметры данной операции могут быть настроены с помощью других регистров. При чтении из этого регистра считываются данные, полученные из OTP + [31:0] + read-write + + + + + OTPA + Регистр адреса страницы + 0x04 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADDR + Адрес слова для выполнения записи/чтения. + [4:0] + read-write + + + Main_array + Номер строки основного массива OTP + 0b00xx + + + Test_row + Тестовая строка OTP + 0b01xx + + + Test_column + Тестовый столбец OTP + 0b10xx + + + Test_bit + Тестовый бит + 0b11xx + + + + + + + OTPCON + Регистр управления + 0x08 + write-only + 0x00000000 + 0xFFFFFFFF + + + APBNWS + Отключение вставки тактов ожидания в процессе обмена по APB при чтении данных (обращении к регистру OTPDAT на чтение). Если такты ожидания отключены (APBNWS=1), то требуется производить опрос флага OTPSTA.BSY после за¬писи адреса в OTPA до тех пор, пока EESTA.BSY не станет равным 0 + [0:0] + write-only + + + man_we_i + Ручное управление сигналом we i блока Hard IP. +Используется для тестирования + [1:1] + write-only + + + man_re_i + Ручное управление сигналом re i блока Hard IP. +Используется для тестирования + [2:2] + write-only + + + MME + Режим ручного управления включен. В этом режиме автоматизированные операции чтения и записи не выполняются. +Используется для тестирования + [3:3] + write-only + + + + + OTPSTA + Регистр статуса + 0x0C + read-only + 0x00000000 + 0xFFFFFFFF + + + BSY + Блок занят (выполняется запрошенная операция) + [0:0] + read-only + + + Ready + Блок готов + 0b00 + + + Busy + Блок занят + 0b01 + + + + + + + OTPDEC + Регистр дешифратора строк + 0x10 + read-only + 0x00000000 + 0xFFFFFFFF + + + DECO + Выход дешифратора строк блока OTP. Используется для тестирования. +Проверка функционирования дешифратора строк осуществляется путем смены адреса тестового столбца, страницы и контроля выходов дешифратора + [8:0] + read-only + + + + + OTPADJ + Регистр управления временными параметрами процедуры чтения и доп. настройками + 0x14 + read-write + 0x01010100 + 0xFFFFFFFF + + + N_RSU + Время между моментом начала транзакции на APB и положительным фронтом re i в тактах. Должно использоваться для обеспечения требования к временам предустановки Hard IP. Учитывая то, что на входе i удерживаются стабильные уровни в результате предыдущей операции записи в регистр OTPA, при частотах ниже 200 МГц данное значение рекомендуется устанавливать равным 0 + [2:0] + read-write + + + N_RA + Длительность высокого уровня сигнала re_i (вход Hard IP) в тактах. Рекомендуемое значение N_RA = ceil(40/Pclk), где Pclk – период тактового сигнала в ceil – функция округления до ближайшего большего целого числа. +Пример: два такта для частоты Fclk = 33,3 МГц. Для корректной работы схемы значение должно быть больше 0 + [10:8] + read-write + + + N_RH + Время между задним фронтом re_i и моментом, в который может быть начата новая транзакция на APB. Должно использоваться для обеспечения требования к временам удержания Hard IP. Рекомендуемое значение N_RH = =ceil(40/Pclk), где Pclk – период тактового сигнала в нс, ceil – функция округле¬ния до ближайшего большего целого числа. +Пример: два такта для частоты Fclk = 33,3 МГц. Для корректной работы схемы значение должно быть больше 0 + [18:16] + read-write + + + sel_upp_read_i + Выбор напряжения чтения + [26:24] + read-write + + + 2V + Напряжения чтения 2,0 В + 0bx00 + + + 2_5V + Напряжения чтения 2,5 B + 0bx01 + + + 3V + Напряжения чтения 3,0 B + 0bx11 + + + VDD18 + Напряжения чтения VDD18 + 0b010 + + + VDD5 + Напряжения чтения VDD5 + 0b110 + + + + + sel_read_cur_i + Выбор тока считывания. Используется для тестирования. Не рекомендуется изменять в штатном режиме работы. + [27:27] + read-write + + + 2uA + Ток считывания 2мкА + 0b00 + + + 0_2uA + Ток считывания 0,2мкА + 0b01 + + + + + power_off_i + Режим пониженного энергопотребления. +После вывода Hard IP из режима пониженного энергопотребления требуется некоторое время перед тем, как могут быть начаты новые операции + [28:28] + read-write + + + Active_mode + Hard IP выведен из режима пониженного энергопотребления и может выполнять операции чтения и записи + 0b00 + + + Low_power_mode + Hard IP введен в режим пониженного энергопотребления, операции записи и чтения запрещены + 0b01 + + + + + + + OTPWT1 + Регистр подстройки длительности процедуры записи 1 + 0x18 + read-write + 0x0202 + 0xFFFFFFFF + + + N_SU + Время между моментом окончания транзакции на APB и положительным фронтом we i в тактах. Должно использоваться для обеспечения требования к временам предустановки Hard IP. Рекомендуемое значение N_SU = =ceil(40/Pclk), где Pclk – период тактового сигнала в нс, ceil – функция округления до ближайшего большего целого числа. +Пример – два такта для частоты Fclk = 33,3 МГц. Для корректной работы схемы значение должно быть больше 0 + [2:0] + read-write + + + N_H + Время между задним фронтом we_i и задним фронтом OTPSTA.BSY в тактах. Должно использоваться для обеспечения требования к временам удержания Hard IP. Рекомендуемое значение N_H=ceil(40/Pclk), где Pclk – период тактового сигнала в нс, ceil – функция округления до ближайшего большего целого числа. +Пример – ldf такта для частоты Fclk = 33,3 МГц. Для корректной работы схемы значение должно быть больше 0 + [10:8] + read-write + + + + + OTPWT2 + Регистр подстройки длительности процедуры записи 2 + 0x1C + read-write + 0x00196E6B + 0xFFFFFFFF + + + N_W + Длительность высокого уровня сигнала we i (вход Hard IP) в тактах. Рекомендуемое значение +N_W = 50000000 нс/Pclk, где Pclk – период тактового сигнала в нс. +Пример– 1666667 тактов для частоты Fclk = 33,3 МГц + [23:0] + read-write + + + + + + + WakeUp + Блок WakeUp - управление питанием системным доменом, управление источниками тактовых сигналов + 0x00060000 + + 0x00 + 0x20 + registers + + + + SYS_MASK + Маски событий для включения и сброса системного домена + 0x00 + read-write + 0x10 + 0xFFFFFFFF + + + SYS_UP_RTC + Разрешение включение системного домена (из режима СТОП) при срабатывании будильника + [0:0] + read-write + + + Disable + Запрещено + 0b00 + + + Enable + Разрешено + 0b01 + + + + + SYS_UP_WU + Разрешение включение системного домена (из режима СТОП) при активном уровне внешнего вывода ext_wu + [1:1] + read-write + + + Disable + Запрещено + 0b00 + + + Enable + Разрешено + 0b01 + + + + + SYS_RST_LDO + Запрещение формирования сброса системного домена при снижении питания (индикация от LDO_SYS) + [2:2] + read-write + + + Disable + Запрещено + 0b01 + + + Enable + Разрешено + 0b00 + + + + + SYS_RST_PS + Запрещение формирования сброса системного домена при снижении питания (индикация от схемы слежения) + [3:3] + read-write + + + Disable + Запрещено + 0b01 + + + Enable + Разрешено + 0b00 + + + + + SYS_RST_BOR + Запрещение формирования сброса системного домена при появлении сигнала BOR + [4:4] + read-write + + + Disable + Запрещено + 0b01 + + + Enable + Разрешено + 0b00 + + + + + BU_RST_BOR + Запрещение формирования сброса батарейного домена при появлении сигнала BOR + [5:5] + read-write + + + Disable + Запрещено + 0b01 + + + Enable + Разрешено + 0b00 + + + + + + + SYS_LEVEL + Активные уровни событий для включения и сброса системного домена + 0x04 + read-write + 0x03 + 0xFFFFFFFF + + + LVL_RTC + Активный уровень срабатывания будильника RTC + [0:0] + read-write + + + Low + Активный уровень "0" + 0b00 + + + High + Активный уровень "1" + 0b01 + + + + + LVL_WU + Активный уровень внешнего вывода ext_wu + [1:1] + read-write + + + Low + Активный уровень "0" + 0b00 + + + High + Активный уровень "1" + 0b01 + + + + + + + SYS_POWEROFF + Запись в регистр «1» отключает питание системного домена + 0x08 + write-only + 0x00 + 0xFFFFFFFF + + + POWER_SWITCH + Регистр управления и статуса схемы слежения за питанием + 0x0C + read-write + 0x00 + 0xFFFFFFFF + + + BATT_GOOD + Флаг состояние резервного (батарейного) источника питания + [2:2] + read-only + + + CONTROL + Выбор источника напряжения VCC_BU при принудительного переключения (при En = "1") + [1:1] + read-write + + + VCC + VCC - источник напряжения VCC_BU + 0b00 + + + VCC_BAT + VCC_BAT - источник напряжения VCC_BU + 0b01 + + + + + EN + Разрешение принудительного переключения на один из источников питания + [0:0] + read-write + + + Automatic + Автоматическое переключение на один из источников питания + 0b00 + + + Forced + Принудительное переключение на один из источников питания + 0b01 + + + + + + + CLOCKS_BU + Регистр управления тактированием батарейного домена + 0x10 + read-write + 0x200 + 0xFFFFFFFF + + + OSC32K_SM + Режим повышенного потребления, активный уровень “0” для OSC32K + [14:14] + read-write + + + RTC_CLK_MUX + Выбор приоритетного источника тактирования часов реального времени: +0x0 – автоматический выбор. При наличии обоих источников 32кГц выбирается внутренний LSI32K + [11:10] + read-write + + + Automatic + Автоматический выбор. При наличии обоих источников 32кГц выбирается внутренний LSI32K + 0x0 + + + LSI32K + Внутренний LSI32K + 0x1 + + + OSC32K + Внешний осциллятор OSC32K + 0x2 + + + + + ADJ_LSI32K + Поправочные коэффициенты LSI32К + [9:6] + read-write + + + LSI32K_EN + Включение/отключение LSI32К + [1:1] + read-write + + + Enable + Включение LSI32К + 0b00 + + + Disable + Отключение LSI32К + 0b01 + + + + + OSC32K_EN + Включение/отключение внешнего осциллятора на 32 KГц + [0:0] + read-write + + + Enable + Включение OSC32K + 0b00 + + + Disable + Отключение OSC32K + 0b01 + + + + + + + CLOCKS_SYS + Регистр управления тактированием системного домена + 0x14 + read-write + 0x200 + 0xFFFFFFFF + + + FORCE_32K_CLK + Принудительное переключение на опорный источник для монитора частоты + [11:10] + read-write + + + Automatic + Автоматический выбор + 0b00 + + + LSI32K + Принудительно выбран LSI32K + 0b01 + + + OSC32K + Принудительно выбран OSC32K + 0b10 + + + Automatic + Автоматический выбор + 0b11 + + + + + ADJ_HSI32M + Поправочные коэффициенты HSI32M + [9:2] + read-write + + + HSI32M_EN + Включение/отключение HSI32M + [1:1] + read-write + + + Enable + Включение HSI32M + 0b00 + + + Disable + Отключение HSI32M + 0b01 + + + + + OSC32M_EN + Включение/отключение внешнего осциллятора на 32 МГц + [0:0] + read-write + + + Enable + Включение OSC32M + 0b00 + + + Disable + Отключение OSC32M + 0b01 + + + + + + + RTC_CONTROL + Сброс RTC происходит при записи “1” + 0x18 + read-write + 0x00 + 0xFFFFFFFF + + + STOP + Переход в режим “Стоп”. Осуществляется записью “1” +Отключает тактирования системной шины. + 0x1C + write-only + 0x00 + 0xFFFFFFFF + + + + + RTC + Часы реального времени + 0x00060400 + + 0 + 0x60 + registers + + + + RRTC_TIME + Регистр установки времени. Используется BCD-кодировка + 0x00 + read-write + 0x00000000 + 0xFFFFFFFF + + + S + Поле единиц секунд. Допустимые значения от 0 до 9 + [7:4] + read-write + + + 0 + 9 + + + + + TS + Поле десятков секунд. Допустимые значения от 0 до 5 + [10:8] + read-write + + + 0 + 5 + + + + + M + Поле единиц минут. Допустимые значения от 0 до 9 + [14:11] + read-write + + + 0 + 9 + + + + + M + Поле десятков минут. Допустимые значения от 0 до 5 + [17:15] + read-write + + + 0 + 5 + + + + + H + Поле единиц часов. Допустимые значения: + - TH = 0 - От 0 до 9; + - TH = 2 - От 0 до 3 + [21:18] + read-write + + + 0 + 9 + + + + + TH + Поле десятков часов. Доступные значения от 0 до 2 + [23:22] + read-write + + + 0 + 2 + + + + + DOW + День недели + + [26:24] + read-write + + DayOfWeek + read-write + + Monday + Понедельник + 001 + + + Tuesday + Вторник + 010 + + + Wednesday + Среда + 011 + + + Thursday + Четверг + 100 + + + Friday + Пятница + 101 + + + Saturday + Суббота + 110 + + + Sunday + Воскресенье + 111 + + + + + + + RRTC_DATE + Регистр установки даты. Используется BCD-кодировка + 0x04 + read-write + 0x00000000 + 0xFFFFFFFF + + + D + Поле единиц дней. Допустимые + значения: + - TD = 2 - от 0 до 3; + - TD = 3 - от 0 до 1 + + [3:0] + read-write + + + 0 + 3 + + + + + TD + Поле десятков дней. Допустимые + значения: + - {TM,M} != 03 - от 0 до 3; + - {TM,M} == 03 - от 0 до 2 + + [5:4] + read-write + + + 0 + 3 + + + + + M + Поле единиц месяцев. Допустимые значения: + - TM = 0 - от 0 до 9; + - TM = 1 - от 0 до 2 + + [9:6] + read-write + + + 0 + 9 + + + + + TM + Поле десятков месяцев. Допустимые значения от 0 до 1 + + [10:10] + read-write + + + 0 + 1 + + + + + Y + Поле единиц годов. Допустимые значения от 0 до 9 + + [14:11] + read-write + + + 0 + 9 + + + + + TY + Поле десятков годов. Допустимые значения от 0 до 9 + + [18:15] + read-write + + + 0 + 9 + + + + + C + Поле единиц веков. Допустимые значения от 0 до 9 + + [22:19] + read-write + + + 0 + 9 + + + + + TC + Поле десятков веков. Допустимые значения от 0 до 9 + + [26:23] + read-write + + + 0 + 9 + + + + + + + RRTC_TALRM + регистр хранит время, при совпадении которого со значением + регистра RRTC_TIME, будет сгенерировано соответствующее прерывание + + 0x08 + read-write + 0x00000000 + 0xFFFFFFFF + + + CS + Разрешает сравнения секунд, когда установлен + + [28:28] + read-write + + + disabled + Сравнение секунд отключено + 0 + + + enable + Сравнение секунд включено + 1 + + + + + CM + Разрешает сравнения минут, когда установлен + + [29:29] + read-write + + + disabled + Сравнение минут отключено + 0 + + + enable + Сравнение минут включено + 1 + + + + + CH + Разрешает сравнения часов, когда установлен + + [30:30] + read-write + + + disabled + Сравнение часов отключено + 0 + + + enable + Сравнение часов включено + 1 + + + + + CDOW + Разрешает сравнения дней недели, когда установлен + + [31:31] + read-write + + + disabled + Сравнение дней недели отключено + 0 + + + enable + Сравнение дней недели включено + 1 + + + + + + + RRTC_DALRM + регистр хранит время, при совпадении которого со значением + регистра RRTC_TIME, будет сгенерировано соответствующее прерывание. + + 0x0C + read-write + 0x00000000 + 0xFFFFFFFF + + + CD + Разрешает сравнения дней, когда установлен + + [27:27] + read-write + + + disabled + Сравнение дней отключено + 0 + + + enable + Сравнение дней включено + 1 + + + + + CM + Разрешает сравнения месяцев, когда установлен + + [28:28] + read-write + + + disabled + Сравнение месяцев отключено + 0 + + + enable + Сравнение месяцев включено + 1 + + + + + CY + Разрешает сравнения годов, когда установлен + + [29:29] + read-write + + + disabled + Сравнение годов отключено + 0 + + + enable + Сравнение годов включено + 1 + + + + + CC + Рразрешает сравнения веков, когда установлен + + [30:30] + read-write + + + disabled + Сравнение веков отключено + 0 + + + enable + Сравнение веков включено + 1 + + + + + + + RRTC_CTRL + регистр управления модулем + + 0x10 + read-write + 0x00000000 + 0xFFFFFFFF + + + ALRM_PAD + Запись “1” – сброс признака установки активного уровня ALARM_PAD + [27:27] + write-only + + + Alarm_reset + Cброс признака установки активного уровня ALARM_PAD + 1 + + + + + FLAG + Сигнал проведения синхронизации + между тактовыми доменами. После записи в любой регистр и пока + данный бит читается равным «1», запрещено выполнять любую новую запись + + [28:28] + read-only + + + Ready + Запись в регистры разрешена + 0 + + + Synchronization + Выполняется синхронизация, запись в регистры запрещена + 1 + + + + + INTE + Бит разрешения прерывания на + выходах irq и irq_async. Прерывания появляются при наличии установленного бита ALRM + + [29:29] + read-write + + + Disabled + Прерывания блока запрещены + 0 + + + Enable + Прерывания блока разрешены + 1 + + + + + ALRM + Установленный бит свидетельствует о совпадении одного разрешенного или + всех разрешённых + полей будильника. Бит необходимо сбрасывать при помощи управляющего ПО + + [30:30] + read-write + + + Inactive + Будильник не сработал + 0 + + + Active + Будильник сработал + 1 + + + + + EN + Модуль включён и производит отсчёт времени, когда установлен + + [31:31] + read-write + + + Disabled + Модуль отключен + 0 + + + Enable + Модуль включен + 1 + + + + + + + RRTC_REG0 + Регистры общего назначения REG0 + 0x20 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG1 + Регистры общего назначения REG1 + 0x24 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG2 + Регистры общего назначения REG2 + 0x28 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG3 + Регистры общего назначения REG3 + 0x2C + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG4 + Регистры общего назначения REG4 + 0x30 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG5 + Регистры общего назначения REG5 + 0x34 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG6 + Регистры общего назначения REG6 + 0x38 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG7 + Регистры общего назначения REG7 + 0x3C + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG8 + Регистры общего назначения REG8 + 0x40 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG9 + Регистры общего назначения REG9 + 0x44 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG10 + Регистры общего назначения REG10 + 0x48 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG11 + Регистры общего назначения REG11 + 0x4C + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG12 + Регистры общего назначения REG12 + 0x50 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG13 + Регистры общего назначения REG13 + 0x54 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG14 + Регистры общего назначения REG14 + 0x58 + read-write + 0x00000000 + 0xFFFFFFFF + + + RRTC_REG15 + Регистры общего назначения REG14 + 0x5C + read-write + 0x00000000 + 0xFFFFFFFF + + + + + BOOT_MANAGER + Блок управления режимом загрузки + 0x00060800 + + 0x00 + 0x08 + registers + + + + BOOT + Регистр режима загрузки + 0x00 + read-write + + + BOOT_MODE + Регистр режима загрузки. +При чтении, возвращает режим, который будет использоваться для следующего сброса системного домена. +При записи – установка нового режима загрузки. + [1:0] + read-write + + + EEPROM + Старт из встроенной памяти EEPROM + 0b00 + + + RAM + Старт из системного ОЗУ + 0b01 + + + SPIFI + Старт из внешней памяти с использованием контроллера SPIFI + 0b10 + + + + + + + + + SPIFI_CONFIG + Контроллер SPIFI + 0x00070000 + + 0x00 + 0x20 + registers + + + + CTRL + SPIFI регистр управления + 0x000 + read-write + 0x400FFFFF + 0xFFFFFFFF + + + TIMEOUT + Количество периодов сигнала SPIFI_SCK без чтения данных в режиме работы с памятью, которое вызывает завершение выполнения команды установкой сигнала SPIFI_CS в состояние «1» и сбросом бита CMD + [15:0] + read-write + + + CSHIGH + Количество периодов сигнала SPIFI_SCK минус один, в течение которых сигнал SPIFI_CS остается в неактивном состоянии перед началом выполнения команды + [19:16] + read-write + + + CACHE_EN + Бит разрешения кэширования + [20:20] + read-write + + + Disable + Кэширование отключено + 0b00 + + + Enable + Кэширование включено + 0b01 + + + + + D_CACHE_DIS + Бит запрещения кеширования данных (транзакций AHB, для которых сигнал HPROT[0:0] = 1) + [21:21] + read-write + + + Data_is_cached + При разрешенном кэшировании кэширование данных выполняется + 0b00 + + + Data_is_not_cached + Данные не кэшируются + 0b01 + + + + + INTEN + Бит разрешения прерывания при завершении выполнения команды (если этот бит равен «1», то прерывание разрешено) + [22:22] + read-write + + + Disable + Прерывнаие запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + MODE3 + Бит режима 3 + [23:23] + read-write + + + MODE0 + Режим 0 (CPOL = 0, CPHA = 0). + +CPOL = 0 — исходное состояние сигнала синхронизации - низкий уровень +CPHA = 0 — выборка данных производится по переднему фронту (переключению) сигнала синхронизации + 0b00 + + + MODE3 + Режим 3 (CPOL = 1, CPHA = 1). + +CPHA = 1 - исходное состояние сигнала синхронизации - высокий уровень +CPOL = 1 - выборка данных производится по заднему фронту (переключению) сигнала синхронизации + 0b01 + + + + + SCK_DIV + Делитель для получения тактового сигнала SPIFI_SCK из системного тактового сигнала HCLK. Частота рассчитывается по формуле: +FSPIFI_SCK = FHCLK / 2^(SCK_DIV+1) + [26:24] + read-write + + + PRFTCH_DIS + Бит разрешения упреждающих выборок кэш памяти +«0» – выборки разрешены + [27:27] + read-write + + + Enable + Выборки разрешены + 0b00 + + + Disable + Выборки запрещены + 0b01 + + + + + DUAL + Бит выбора протокола: +сигналы IO[3:0] – (0–4) битовый протокол; +сигналы IO[1:0] – (1–2) битовый протокол + [28:28] + read-write + + + Single_or_quad + Сигналы IO[3:0] – (0–4) битовый протокол + 0b00 + + + Dual + Сигналы IO[1:0] – (1–2) битовый протокол + 0b01 + + + + + RFCLK + Бит выбора активного перепада сигнала для стробирования входных данных + [29:29] + read-write + + + Rising_edge + Положительный перепад + 0b00 + + + Falling_edge + Отрицательный перепад + 0b01 + + + + + FBLK + Бит выбора сигнала стробирования входных данных с выходного буфера тактового сигнала + [30:30] + read-write + + + Internal_signal + Внутренний сигнал + 0b00 + + + External_signal + Внешний сигнал + 0b01 + + + + + DMAEN + Бит разрешения запросов DMA от контроллера SPIFI +Устанавливать только в периферийном режиме + [31:31] + read-write + + + Disable + Запросы запрещены + 0b00 + + + Enable + Запросы разрешены + 0b01 + + + + + + + CMD + SPIFI регистр команд. Этот регистр может быть записан только тогда, когда биты CMD и MCINIT равны нулю + 0x004 + read-write + 0x00000000 + 0xFFFFFFFF + + + DATALEN + В тех случаях, когда бит POLL равен «0», это поле определяет количество байт данных при выполнении команды. Если это поле равно «0», то выполняемая команда не содержит данных + [13:0] + read-write + + + POLL + Бит должен быть установлен при выполнении команды, которая содержит входное поле данных и циклически запрашивает состояние бита входного потока битов из регистра статуса флэш-памяти. Номер проверяемого бита в байте статуса должен быть указан в битах DATALEN[2:0], а требуемое значение бита – в бите DATALEN[3]. Как только значения этих битов станут равны, контроллер завершает выполнение текущей команды, деактивируя сигнал SPIFI_CS, и формирует прерывание, если оно разрешено. +После завершения процесса поллинга необходимо считать один байт из регистра DATA, так как в нем сохряняется последний принятый статус FLASH. + [14:14] + read-write + + + Disable + Режим поллинга выключен + 0b00 + + + Enable + Режим поллинга включен + 0b01 + + + + + DOUT + Бит направления передачи данных. «0» – чтение из флэш + [15:15] + read-write + + + Read + Чтение из флэш + 0b00 + + + Write + Запись во флэш + 0b01 + + + + + INTLEN + Количество байт промежуточных данных, которые хранятся в регистре IDATA. Если количество байт больше, чем может хранить регистр IDATA, то остаток добивается нулевыми значениями + [18:16] + read-write + + + FIELDFORM + Формат вывода полей команды + [20:19] + read-write + + + All_serial + Все поля выводятся в последовательном режиме + 0x00 + + + Data_parallel + Данные выводятся в четырех или двух битовом режиме, а остальные поля в последовательном режиме + 0x01 + + + Opcode_serial + Код операции выводится в последовательном режиме, а остальные в четырех или двух битовом + 0x02 + + + All_parallel + Все поля в четырех или двух битовом режиме + 0x03 + + + + + FRAMEFORM + Бит управления полями кода операции и адреса команды + [23:21] + read-write + + + OPCODE_NOADDR + Выдается только код операции, адреса нет + 0x01 + + + OPCODE_1ADDR + Код операции и младший байт адреса + 0x02 + + + OPCODE_2ADDR + Код операции и два младших байта адреса + 0x03 + + + OPCODE_3ADDR + Код операции и три младших байта адреса + 0x04 + + + OPCODE_4ADDR + Код операции и 4 байта адреса + 0x05 + + + NOOPCODE_3ADDR + Нет кода операции, три младших байта адреса + 0x06 + + + NOOPCODE_4ADDR + Нет кода операции, 4 байта адреса + 0x07 + + + + + OPCODE + Код операции (не используется для некоторых значений поля FRAMEFORM) + [31:24] + read-write + + + + + ADDRESS + SPIFI регистр адреса. Данный регистр должен быть настроен перед инициализацией любой команды. При выполнении команды первым выводится старший бит адреса + 0x008 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADDRESS + Исполнительный адрес команды + [31:0] + read-write + + + + + IDATA + SPIFI регистр промежуточных данных. Данный регистр должен быть настроен перед инициализацией команды, в которой используются промежуточные данные. При выполнении команды первым выводится младший бит слова + 0x00C + read-write + 0x00000000 + 0xFFFFFFFF + + + IDATA + Промежуточные данные + [31:0] + read-write + + + + + CLIMIT + SPIFI регистр верхней границы адреса кеширования + 0x010 + read-write + 0x00000000 + 0xFFFFFFFF + + + CLIMIT + Верхний предел кэшируемой памяти + [31:0] + read-write + + + + + DATA + SPIFI регистр данных. Если выходной буфер чтения пуст или входной буфер записи полон, то при отправке запроса по шине AHB будет вызвано исключение (код 5 “Load access fault”). + 0x014 + read-write + 0x00000000 + 0xFFFFFFFF + + + DATA8 + Входные или выходные данные + [7:0] + read-write + + + DATA16 + Входные или выходные данные + [15:0] + read-write + + + DATA32 + Входные или выходные данные + [31:0] + read-write + + + + + MCMD + SPIFI регистр команд памяти + 0x018 + read-write + 0x03800000 + 0xFFFFFFFF + + + POLL + Бит должен быть установлен в «0» + [14:14] + read-write + + + Disable + Режим поллинга выключен + 0b00 + + + + + DOUT + Бит должен быть установлен в «0» + [15:15] + read-write + + + Read + Чтение из флэш + 0b00 + + + + + INTLEN + Кол-во байт промежуточных данных (они хранятся в регистре IDATA). Если кол-во байт больше, чем может хранить регистр IDATA, остаток заполняется нулевыми значениями + [18:16] + read-write + + + FIELDFORM + Формат вывода полей команды + [20:19] + read-write + + + All_serial + Все поля выводятся в последовательном режиме + 0x00 + + + Data_parallel + Данные выводятся в четырех или двух битовом режиме, а остальные поля в последовательном режиме + 0x01 + + + Opcode_serial + Код операции выводится в последовательном режиме, а остальные в четырех или двух битовом + 0x02 + + + All_parallel + Все поля в четырех или двух битовом режиме + 0x03 + + + + + FRAMEFORM + Бит управления полями кода операции и адреса команды + [23:21] + read-write + + + OPCODE_NOADDR + Выдается только код операции, адреса нет + 0x01 + + + OPCODE_1ADDR + Код операции и младший байт адреса + 0x02 + + + OPCODE_2ADDR + Код операции и два младших байта адреса + 0x03 + + + OPCODE_3ADDR + Код операции и три младших байта адреса + 0x04 + + + OPCODE_4ADDR + Код операции и 4 байта адреса + 0x05 + + + NOOPCODE_3ADDR + Нет кода операции, три младших байта адреса + 0x06 + + + NOOPCODE_4ADDR + Нет кода операции, 4 байта адреса + 0x07 + + + + + OPCODE + Код операции (не используется для некоторых значений поля FRAMEFORM) + [31:24] + read-write + + + + + STAT + SPIFI регистр статуса + 0x01C + read-write + 0x02000001 + 0xFFFFFFFF + + + MCINIT + Бит устанавливается в «1», если программное обеспечение успешно записало регистр команд памяти. Сброс бита осуществляется аппаратным сбросом или установкой в «1» бита RESET + [0:0] + read-only + + + Idle + Программное обеспечение не записало регистр команд памяти + 0x00 + + + Success + Программное обеспечение успешно записало регистр команд памяти + 0x01 + + + + + CMD + Бит устанавливается в «1», если программное обеспечение успешно записало регистр команд. Сброс этого бита осуществляется теми же сигналами, что и бит MCINIT. Также сброс бита CMD происходит при завершении выполнения команды, когда деактивируется сигнал SPIFI_CS + [1:1] + read-write + + + Idle + Программное обеспечение не записало регистр команд + 0x00 + + + Success + Программное обеспечение успешно записало регистр команд + 0x01 + + + + + RESET + Бит предназначен для того, чтобы прервать текущую команду периферийного режима или режима памяти. Бит сбрасывается, когда контроллер готов к выполнению новой команды + [4:4] + read-write + + + Ready + Контроллер готов к выполнению новой команды + 0x00 + + + Reset + Прервать текущую команду периферийного режима или режима памяти + 0x01 + + + + + INTRQ + Запись «1» в бит сбрасывает запрос на прерывание от контроллера SPIFI + [5:5] + read-write + + write + + Clear_interrupt + Сбрость запрос на прерывание от контроллера SPIFI + 0x01 + + + + + VERSION + Версия контроллера SPIFI (поле доступно только для чтения) + [31:24] + read-write + + + + + + + EEPROM_REGS + Контроллер EEPROM (8Кб) + 0x00070400 + + 0x00 + 0x24 + registers + + + + EEDAT + Регистр чтения/записи данных + 0x00 + read-write + + + DATA + В процессе чтения/записи данного регистра производится автоматическое инкрементирование адреса (EEA). + [31:0] + read-write + + + + + EEA + Регистр адреса страницы + 0x04 + write-only + + + ADDR + Адрес слова для выполнения стирания/програмирования /чтения. Если необходимо выполнить стирание или программирование, данный адрес должен использоваться в процедуре заполнения буфера записи + [12:2] + write-only + + + + + EECON + Регистр управления + 0x08 + write-only + 0x00 + 0xFFFFFFFF + + + EX + Запуск процедуры. Запись 1 в данный бит инициирует выполнение процедуры, процедура определяется битами OP + [0:0] + write-only + + + OP + Выбор процедуры + [2:1] + write-only + + + Read_page + Чтение страницы + 0b00 + + + Erase + Стирание + 0b01 + + + Programming + Программирование + 0b10 + + + + + WRBEN + Поведение операции стирания/програмирования. +Данные биты должны быть установлены перед операцией заполнения буфера записи перед операциями стирания и программирования + [4:3] + write-only + + + One_page + обычное стирание/програмирование одной страницы; + 0b00 + + + Even_pages + стирание/програмирование всех четных страниц; + 0b01 + + + Odd_pages + стирание/програмирование всех нечетных страниц; + 0b10 + + + All_pages + стирание/програмирование всех страниц. + 0b11 + + + + + APBNWS + Отключение вставки тактов ожидания в процессе обмена по APB при заполнении буфера записи (во время записи в EEDAT) и при записи адреса для процедуры чтения данных (EEA). Если такты ожидания отключены (APBNWS=1), то требуется производить опрос флага EESTA.BSY после этих операций до тех пор, пока EESTA.BSY не станет равным 0 + [5:5] + write-only + + + Disable + Такты ожидания включены + 0b00 + + + Enable + Такты ожидания отключены + 0b01 + + + + + DISECC + Отключение схемы коррекции ошибок во время выполнения запрошенной процедуры. Отлючение производится записью «1» в этот бит. Если схема коррекции отключена, то при записи значение бит коррекции определяется шестью млад¬шими битами слова. Если схема коррекции включена, то при записи значение бит коррекции вычисляется схемой SEC32 - ENC. Если схема коррекции отключена, то при чтении не про¬изводится коррекция возможных ошибок в слове. Если схема коррекции включена, то при чтении данные корректируются схемой DEC32_ENC + [6:6] + write-only + + + Disable + Включение схемы коррекции ошибок во время выполнения запрошенной процедуры + 0b00 + + + Enable + Отключение схемы коррекции ошибок во время выполнения запрошенной процедуры + 0b01 + + + + + BWE + Разрешение записи в буфер. Данный бит следует устанавливать в «1» перед операцией заполнения буфера записи перед операциями стирания и программирования. После операций стирания и программирования данный бит автоматически очищается (то есть для последующей записи в буфер следует повторно выполнить запись «1» в этот бит) + [7:7] + write-only + + + IESERaR + Разрешение запроса прерывания при поднятии флага SERR + [8:8] + write-only + + + Disable + Запрос не поступает + 0b00 + + + Enable + Запрос поступает + 0b01 + + + + + + + EESTA + Регистр статуса + 0x0C + 0x00 + 0xFFFFFFFF + + + BSY + Блок занят (выполняется запрошенная операция) + [0:0] + read-only + + + Ready + Блок готов + 0b00 + + + Busy + Блок занят (выполняется запрошенная операция) + 0b01 + + + + + SERR + Индикатор одиночной (исправимой) ошибки. Аппаратно может быть только поднят, т.е. если после слова с ошибкой считано слово без ошибки, флаг не очистится. Может быть очищен программно путем записи 0 + [1:1] + write-only + zeroToClear + + + + + EERB + Регистр бит коррекции прочитанного слова + 0x10 + read-only + 0x00 + 0xFFFFFFFF + + + CORRECT + Содержит 6 бит коррекции последнего считанного слова + [5:0] + read-only + + + + + EEADJ + Регистр настроек + 0x14 + read-write + 0x329000 + 0xFFFFFFFF + + + OSCX2 + Увеличение частоты тактового сигнала, поступающего на устройство с зарядовой накачкой, в два раза. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [0:0] + read-write + + + HivCtl + Подстройка уровня внутреннего сигнала HIV. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [3:1] + read-write + + + PlusImix + Сигнал управления блоком мониторинга аналоговых сигналов. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [4:4] + read-write + + + VboostCtl + Старший разряд - подстройка внутреннего сигнала Vboost, младший разряд - сигнал управления блоком мониторинга аналоговых сигналов. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [6:5] + read-write + + + MinusImix + Сигнал управления блоком мониторинга аналоговых сигналов. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [7:7] + read-write + + + DummyCtl + Подстройка момента захвата выдаваемых данных. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [9:8] + read-write + + + VbgCtl + Подстройка опорного напряжения bandgap. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [12:10] + read-write + + + RefCtl + Подстройка тока, используемого при чтении. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [15:13] + read-write + + + VcgCtl + Подстройка напряжения, подаваемого на управляющие затворы при чтении. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [18:16] + read-write + + + CGSTRICT + Включение режима точной подстройки напряжения, используемого при чтении. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [19:19] + read-write + + + VppCtl + Подстройка времени нарастания высокого напряжения. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [21:20] + read-write + + + StrictCtl + Точная подстройка тока, используемого при чтении. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [24:22] + read-write + + + StopEe + Перевод Hard IP в режим пониженного энергопотребления + [25:25] + read-write + + + IddqEn + Перевод Hard IP в состояние бездействия (quiescent) для Iddq тестирования. + +Поле предназначено для тонкой настройки блока и выполнения процедуры тестирование. Не гарантируется работа блока при использовании не рекомендованных производителем значений. + [26:26] + read-write + + + + + NCYCRL + Регистр подстройки длительности процедур чтения и заполнения буфера записи + 0x18 + read-write + 0x10201 + 0xFFFFFFFF + + + N_LD + Количество тактов между передними и задними фронтами сигналов Hard IP Phi1Ee и Phi1ShiftEe и задержка от начала обращения по шине до первого фронта Phi1Ee. Рекомендуемое значение при любых частотах clk 1 такт. Запрещено устанавливать равным 0 + [7:0] + read-write + + + N_R_1 + Количество тактов, в течение которого Phi1ShiftEe имеет высокий уровень в процедуре чтения. Рекомендуемое значение N RA = ceil(51/Pclk), где Pclk – период тактового сигнала в нс, ceil – функция округления до ближайшего большего целого числа. Запрещено устанавливать равным 0 + [15:8] + read-write + + + N_R_2 + Количество тактов, требуемое для завершения процедуры чтения (перевода OkSelEe на высокий уровень после процедуры чтения). Рекомендуемое значение при любых частотах clk 1 такт. Запрещено устанавливать равным 0 + [23:16] + read-write + + + + + NCYCEP1 + Регистр 1 подстройки длительности процедур стирания и программирования + 0x1C + read-write + 66667 + 0xFFFFFFFF + + + N_EP_1 + Длительность высокого уровня сигнала BUSY (вход Hard IP) в тактах. Рекомендуемое значение N RA = 2000000 нс / Pclk, где Pclk – период тактового сигнала в нс. +Пример – 66667 тактов для частоты Fclk = 33,3 МГц. Запрещено устанавливать равным 0 + [17:0] + read-write + + + + + NCYCEP2 + Регистр 2 подстройки длительности процедур стирания и программирования + 0x20 + read-write + 50 + 0xFFFFFFFF + + + N_EP_2 + Задержка между задними фронтами BUSY и HvonValid (входы Hard IP) в тактах. +Рекомендуемое значение N RA = 15000 нс / Pclk, +где Pclk – период тактового сигнала в нс. +Пример – 500 тактов для частоты Fclk = 33,3 МГц. Запрещено устанавливать равным 0 + [10:0] + read-write + + + + + + + CRYPTO + Крипто-блок + 0x00080000 + + 0x00 + 0x10 + registers + + + + BLOCK + Буфер данных для шифрования + 0x0 + read-write + 0xFFFFFFFF + + + KEY + Буфер данных ключа + 0x4 + write-only + 0xFFFFFFFF + + + INIT + Буфер данных вектора инициализации + 0x8 + write-only + 0xFFFFFFFF + + + CONFIG + Регистр конфигурации + 0xC + read-write + 0xFFFFFFFF + + + DECODE + Задаёт режим хода вычислительного ядра + [0:0] + read-write + + + Encode + Прямой ход (шифрование) + 0b00 + + + Decode + Обратный ход (расшифровка) + 0b01 + + + + + CORE_SEL + Регистр выбора алгоритма шифрования + [2:1] + read-write + + + Kuznechik + «Кузнечик» + 0x00 + + + Magma + «Магма» + 0x01 + + + AES + «AES» + 0x02 + + + + + MODE_SEL + Регистр выбора режима шифрования + [4:3] + read-write + + + ECB + Режиме простой замены (ECB) + 0x00 + + + CBC + Режим сцепления блоков (CBC) + 0x01 + + + CTR + Режим гаммирования (CTR) + 0x02 + + + + + SWAP_MODE + Регистр выбора режима перестановки слова + [6:5] + read-write + + + None + Нет перестановки + 0x00 + + + Half_word + Перестановка по полуслову + 0x01 + + + Byte + Перестановки по байтам + 0x02 + + + Bit + Перестановка по битам + 0x03 + + + + + ORDER_MODE + Выбор порядка загрузки/выгрузки + [7:7] + read-write + + + LSW + От младшего слова к старшему + 0b00 + + + MSW + От старшего слова к младшему + 0b01 + + + + + C_RESET + Сброс счётчиков загружаемых/выгружаемых данных + [8:8] + read-write + + + READY + Состояние доступности модуля + [9:9] + read-only + + + Busy + Занято + 0b00 + + + Available + Доступно + 0b01 + + + + + WRITE_STATUS + Буфер данных доступен для записи + [10:10] + read-only + + + Unavailable + Недоступно + 0b00 + + + Available + Доступно + 0b01 + + + + + READ_STATUS + Буфер данных доступен для чтения + [11:11] + read-only + + + Unavailable + Недоступно + 0b00 + + + Available + Доступно + 0b01 + + + + + + + + + CRC + Блок вычисления контрольных сумм + 0x00080400 + + 0x00 + 0x0C + registers + + + + DATA + Регистр данных + 0x00 + read-write + + + POLY + Регистр полинома + 0x04 + read-write + + + CTRL + Регистр управления + 0x08 + + + TOT + Перестановка битов/байтов входных данных + [31:30] + read-write + + + None + Перестановка выключена + 0b00 + + + Bits + Биты в байтах перестанавливаются (бит 7 с битом 0, бит 15 с битом 8, с остальными байтами так же), байты НЕ перестанавливаются; + 0b01 + + + Bits_bytes + Перестанавливаются и биты, и байты + 0b10 + + + Bytes + Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1); + 0b11 + + + + + TOTR + Перестановки битов/байтов выходных данных + [29:28] + read-write + + + None + Перестановка выключена + 0b00 + + + Bits + Биты в байтах перестанавливаются (бит 7 с битом 0, бит 6 с битом 1 и т.д.; бит 15 c битом 8, бит 14 с битом 9 и т.д., с остальными байтами так же), байты НЕ перестанавливаются + 0b01 + + + Bits_bytes + Перестанавливаются и биты, и байты + 0b10 + + + Bytes + Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1); + 0b11 + + + + + FXOR + Инверсия контрольной суммы. +Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF) + [26:26] + read-write + + + Inversion_disable + Инверсия выключена + 0b00 + + + Inversion_enable + Инверсия включена (операция XOR выполняется) + 0b01 + + + + + WAS + Назначение регистра данных + [25:25] + read-write + + + Data + Записываем данные + 0b00 + + + Init_data + Записываем начальное значение + 0b01 + + + + + Busy + Бит занятости автомата. +После записи в регистр данных слова для вычисления контрольной суммы бит занятости перейдет в состояние единицы через один такт после такта записи. То есть чтение регистра управления, идущее на шине AHB сразу на следующем такте после записи данных, вернет результат с нулевым (еще не обновленным) значением бита Busy + [0:0] + read-only + + + Ready + Автомат закончил вычисления + 0b00 + + + Busy + Автомат занят + 0b01 + + + + + + + + + WDT + Сторожевой таймер + 0x00081000 + + 0x00 + 0xA0 + registers + + + + CON + Конфигурация + 0x84 + read-write + 0x00000000 + 0xFFFFFFFF + + + PRESCALE + Делитель входной частоты (Fclk) для таймера + [14:12] + read-write + + + 1 + Fclk / 1 + 0b00 + + + 2 + Fclk / 2 + 0b01 + + + 4 + Fclk / 4 + 0b10 + + + 16 + Fclk / 16 + 0b11 + + + 64 + Fclk / 64 + 0b100 + + + 256 + Fclk / 256 + 0b101 + + + 1024 + Fclk / 1024 + 0b110 + + + 4096 + Fclk / 4096 + 0b111 + + + + + PRELOAD + Начальное значение таймера при запуске или перезапуске (таймер считает в сторону увеличения значений) + [11:00] + read-write + + + + + KEY + Регистр ключа + 0x9C + write-only + 0xFFFFFFFF + + + STA + Регистр состояния + 0x9C + read-only + 0xFFFFFFFF + + + WDT_RST_FLAG + Флаг генерации сброса сторожевым таймером. Сбрасывается в 0 только при снятии и последующей подаче питания + [8:8] + read-only + + + TIMERLOADING + Бит перезагрузки значения + [1:1] + read-only + + + Reloading_complete + Перезагрузка значения таймера в данный момент не выполняется (завершена) + 0b00 + + + Reloading + Выполняется перезагрузка значения в таймере + 0b01 + + + + + TIMERENABLED + Бит активности таймера + [0:0] + read-only + + + Disable + Таймер остановлен + 0b00 + + + Enable + Таймер запущен + 0b01 + + + + + + + + + USART_0 + приемо-передатчик + 0x00081400 + + 0x00 + 0x30 + registers + + + + CONTROL1 + Регистр управления 1 + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + M + M1[28] и M0[12] управляют длиной кадра. Примечание: Эти биты могут быть изменены только при остановке работы (UE=0) + [28:12] + read-write + + + 8bits + 8 бит данных + 0b00000000000000000 + + + 9bits + 9 бит данных + 0b00000000000000001 + + + 7bits + 7 бит данных + 0b10000000000000000 + + + + + PCE + Контроль четности. Примечание: Этот бит может быть изменен только при остановке работы (UE=0) + [10:10] + read-write + + + Disable + Контроль четности выключен + 0b00 + + + Enable + Контроль четности включен + 0b01 + + + + + PS + Выбор способа формирования бита четности. Примечание: Этот бит может быть изменен только при остановке работы (UE=0) + [9:9] + read-write + + + Parity + Бит четности + 0b00 + + + Odd + Бит нечетности + 0b01 + + + + + PEIE + Управление прерыванием при ошибке в принятом бите четности + [8:8] + read-write + + + Disable + Прерывание по ошибке в бите четности выключено + 0b00 + + + Enable + Прерывание по ошибке в бите четности включено + 0b01 + + + + + TXEIE + Управление прерыванием при передаче данных в момент записи данных в сдвиговый регистр + [7:7] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + TCIE + Управление прерыванием при успешной передаче данных + [6:6] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + RXNEIE + Управление прерыванием при успешном приеме данных или перезаписи полученных данных + [5:5] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + IDLEIE + Управление прерыванием при отсутствии входных транзакций + [4:4] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + TE + Управление передатчиком + [3:3] + read-write + + + Disable + Передатчик выключен + 0b00 + + + Enable + Передатчик включен + 0b01 + + + + + RE + Управление приемником + [2:2] + read-write + + + Disable + Приемник выключен + 0b00 + + + Enable + Приемник включен + 0b01 + + + + + UE + Ресет USART. Отменяет все текущие операции. Не очищает регистры конфигурации, но сбрасывает флаги + [0:0] + read-write + + + Disable + USART выключен + 0b00 + + + Enable + USART включен + 0b01 + + + + + + + CONTROL2 + Регистр управления 2 + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + MSBFIRST + Управление очередностью приема и передачи данных. Этот бит не влияет на передачу и прием бита четности. +Этот бит может быть изменен только при остановке работы (UE=0) + [19:19] + read-write + + + LSB + Начинать с 0 бита + 0b00 + + + MSB + Начинать с 9, 8 или 7 в зависимости от настроек длины посылки. + 0b01 + + + + + DATAINV + Управление полярностью принимаемых и передаваемых данных. Изменение полярности не влияет на бит четности. Этот бит может быть изменен только при остановке работы (UE=0) + [18:18] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + TXINV + Управление полярностью TX выхода. Регистр влияет не только на данные, но и на стоп биты, старт биты и тд. Этот бит может быть изменен только при остановке работы (UE=0) + [17:17] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + RXINV + Управление полярностью RX выхода. Регистр влияет не только на данные, но и на стоп биты, старт биты и тд. Этот бит может быть изменен только при остановке работы (UE=0) + [16:16] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + SWAP + Обмен функциями TX выхода и RX входа. Этот бит может быть изменен только при остановке работы (UE=0) + [15:15] + read-write + + + Normal + Обычное функционирование + 0b00 + + + Swap + Обмен функциями (TX = RX и RX = TX). + 0b01 + + + + + LBM + Регистр режима обратной внутренней петли. Этот бит может быть изменен только при остановке работы (UE=0) + [14:14] + read-write + + + Normal + Обычное функционирование + 0b00 + + + Loopback + Сигналы TX и RTS подаются внутрь блока в обход входов RX и CTS. При этом TX = 1 и RTS = 1, входы RX и CTS не активны + 0b01 + + + + + STOP_1 + Количество стоп битов для приемника и передатчика. Этот бит может быть изменен только при остановке работы (UE=0) + [13:13] + read-write + + + 1bit + 1 стоп бит + 0b00 + + + 2bits + 2 стоп бита + 0b01 + + + + + CLKEN + Управление синхронным режимом. Этот бит может быть изменен только при остановке работы (UE=0) + [11:11] + read-write + + + Asynchronous + Синхронный режим выключен + 0b00 + + + Synchronous + Синхронный режим включен + 0b01 + + + + + CPOL + Управление полярностью выходного тактового сигнала CK. Этот бит может быть изменен только при остановке работы (UE=0) + [10:10] + read-write + + + 0 + Логический «0» вне транзакции + 0b00 + + + 1 + Логическая «1» вне транзакции + 0b01 + + + + + CPHA + Управление фазой выходного тактового сигнала CK. Этот бит может быть изменен только при остановке работы (UE=0) + [9:9] + read-write + + + 0 + Первое изменение тактового сигнала – фронт + 0b00 + + + 1 + Первое изменение тактового сигнала – срез (обратный фронт). + 0b01 + + + + + LBCL + Управление последним тактовым импульсом. Этот бит может быть изменен только при остановке работы (UE=0) + [8:8] + read-write + + + 0 + Последний тактовый импульс отсутствует + 0b00 + + + 1 + Последний тактовый импульс присутствует. + 0b01 + + + + + LBDIE + Управление прерыванием при обнаружении break состояния на RX линии + [6:6] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + + + CONTROL3 + Регистр управления 3 + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + OVRDIS + Выбор реакции на переполнение. Этот бит может быть изменен только при остановке работы (UE=0) + [12:12] + read-write + + + 0 + При переполнении взводится флаг ошибки (ORE), новые данные не записываются + 0b00 + + + 1 + флаг переполнения не взводится, данные перезаписываются + 0b01 + + + + + CTSIE + Управление прерыванием при обнаружении измене-ния CTS + [10:10] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + CTSE + Выбор реакции на входной сигнал CTS. Этот бит может быть изме-нен только при остановке работы (UE=0) + [9:9] + read-write + + + Ignored + Сигнал игнорируется + 0b00 + + + Control + сигнал управляет передачей данных трансмиттером. Передача разрешена при (CTS = 0) + + 0b01 + + + + + RTSE + Управление выходным сигналом RTS. Этот бит может быть изменен только при остановке работы (UE=0) + [8:8] + read-write + + + 0 + Сигнал всегда в разрешающем состоянии (RTS = 0) + 0b00 + + + 1 + Сигнал находится в разрешающем состоянии (RTS = 0), только когда приемник готов принять данные + 0b01 + + + + + DMAT + Управление работой сигнала dma_trq + [7:7] + read-write + + + Disable + Сигнал выключен + 0b00 + + + Enable + Сигнал включен + 0b01 + + + + + DMAR + Управление работой сигнала dma_rrq + [6:6] + read-write + + + Disable + Сигнал выключен + 0b00 + + + Enable + Сигнал включен + 0b01 + + + + + HDSEL + Выбор между полудуплексным и дуплексным режимами работы. В полудуплексном режиме RX не используется, все данные передаются и принимаются через TX. При наличии данных на передачу происходит отправка данных в остальное время прием. Этот бит может быть изменен только при остановке работы (UE=0) + [3:3] + read-write + + + Duplex + Дуплексный режим работы + 0b00 + + + Half_duplex + Полудуплексный режим работы + 0b01 + + + + + SBKRQ + Переход передатчика в break состояние + [2:2] + read-write + + + Normal + Обычный режим работы + 0b00 + + + Break_tx + Состояние break на линии TX + 0b01 + + + + + EIE + Управление прерыванием при обнаружении ошибок приема данных (FE, ORE, NF) + [0:0] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + + + DIVIDER + Регистр настройки делителя + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + BRR + Значение делителя входного тактового сигнала (clk_in). +При BRR < 16 USART не активен +Бодрейт рассчитывается по следующей формуле: +BR = F/BRR, где BR - бодрейт, F - значение частоты входного тактового сигнала +Этот бит может быть изменен только при остановке работы (UE=0) + [15:0] + read-write + + + + + FLAGS + Регистр прерываний + 0x1C + read-write + 0x0 + 0xFFFFFFFF + + + REACK + Флаг готовности приемника к работе после снятия сброса (UE и RE) + [22:22] + read-only + + + Unready + Ресет UE и RE активен + 0b00 + + + Ready + Ресет UE и RE снят + 0b01 + + + + + TEACK + Флаг готовности передатчика к работе после снятия сброса (UE и TE) + [21:21] + read-only + + + Unready + Ресет UE и TE активен + 0b00 + + + Ready + Ресет UE и TE снят + 0b01 + + + + + BUSY + Флаг активности на линии RX + [16:16] + read-only + + + Inactive + Нет активности на линии RX + 0b00 + + + Active + Идет передача данных или break состояние + 0b01 + + + + + CTS + Флаг отображает текущее значение сигнала CTS + [10:10] + read-only + + + 0 + CTS = 0 + 0b00 + + + 1 + CTS = 1 + 0b01 + + + + + CTSIF + Флаг взводится при изменении значения сигнала CTS. Флаг сбрасывается записью 1 + [9:9] + read-write + oneToClear + + + 0 + Состояние CTS не менялось с момента сброса флага + 0b00 + + + 1 + Состояние CTS менялось с момента сброса флага + 0b01 + + + + + LBDF + Флаг обнаружения break состояния на линии RX. Флаг сбрасывается записью 1 + [8:8] + read-write + oneToClear + + + Not_detected + Состояние break не обнаружено с момента сброса флага + 0b00 + + + Detected + Состояние break обнаружено с момента сброса флага + 0b01 + + + + + TXE + Флаг взводится при передаче данных в момент записи данных в сдвиговый регистр. Флаг сбрасывается записью данных в регистр TDR или записью 1 + [7:7] + read-write + oneToClear + + + 0 + Данные не записывались в сдвиговый регистр с момента сброса флага + 0b00 + + + 1 + Данные записывались в сдвиговый регистр + 0b01 + + + + + TC + Флаг взводится при передаче данных в момент отправки последнего стоп бита. Флаг сбрасывается записью 1 + [6:6] + read-write + oneToClear + + + 0 + Данные не отправлялись с момента сброса флага + 0b00 + + + 1 + Данные отправлялись с момента сброса флага + 0b01 + + + + + RXNE + Флаг взводится при записи принятых данных в регистр RDR из сдвигового регистра. Флаг сбрасывается записью 1 или чтением регистра RDR + [5:5] + read-write + oneToClear + + + 0 + Данные не принимались после сброса флага + 0b00 + + + 1 + Данные принимались после сброса флага + 0b01 + + + + + IDLE + Флаг взводится при отсутствии активности на линии RX в течении 8 битовых тактов при взведенном флаге RXNE. Флаг сбрасывается записью 1 + [4:4] + read-write + oneToClear + + + 0 + Состояние idle не обнаружено после сброса флага + 0b00 + + + 1 + Состояние idle обнаружено после сброса флага + 0b01 + + + + + ORE + Флаг взводится при попытке перезаписи RDR. Флаг сбрасывается записью 1 + [3:3] + read-write + oneToClear + + + 0 + Попыток перезаписи не обнаружено с момента сброса флага + 0b00 + + + 1 + Попытка перезаписи обнаружена с момента сброса флага + 0b01 + + + + + NF + Флаг обнаружения ложных переключений на линии RX. Флаг сбрасывается за-писью 1 + [2:2] + read-write + oneToClear + + + 0 + Помех не обнаружено с момента сброса флага + 0b00 + + + 1 + Помехи обнаружены с момента сброса флага + 0b01 + + + + + FE + Флаг взводится при обнаружении ошибок в стоп бите или битах. Флаг сбрасывается записью 1 + [1:1] + read-write + oneToClear + + + 0 + Ошибок приема не обнаружено с момента сброса флага + 0b00 + + + 1 + Ошибка приема обнаружена с момента сброса флага + 0b01 + + + + + PE + Флаг обнаружения ошибочного бита четности. Флаг сбрасывается записью 1 + [0:0] + read-write + oneToClear + + + 0 + Ошибок в битах четности не обнаружено с момента сброса флага + 0b00 + + + 1 + Ошибка в бите четности обнаружена с момента сброса флага + 0b01 + + + + + + + RXDATA + Регистр принятых данных + 0x24 + read-only + 0x0 + 0xFFFFFFFF + + + RDR + Принятые данные + [8:0] + read-only + + + + + TXDATA + Регистр передаваемых данных + 0x28 + read-write + 0x0 + 0xFFFFFFFF + + + TDR + Передаваемые данные + [8:0] + read-write + + + + + MODEM + Регистр управления модемом + 0x2C + 0x0 + 0xFFFFFFFF + + + DTR + Регистр управления сигналом DTR + [12:12] + read-write + + + Unready + Отсутствие сигнала готовности + 0b00 + + + Ready + Готовность к приему данных + 0b01 + + + + + DCD + Регистр содержит текущее значение сигнала DCD + [7:7] + read-only + + + 0 + Отсутствие несущей + 0b00 + + + 1 + Обнаружение несущей + 0b01 + + + + + RI + Регистр содержит текущее значение сигнала RI + [6:6] + read-only + + + 0 + Отсутствие звонка + 0b00 + + + 1 + Звонок (вызов) на телефонной линии + 0b01 + + + + + DSR + Регистр содержит текущее значение сигнала DSR + [5:5] + read-only + + + Unready + Источник данных не готов + 0b00 + + + Ready + Источник данных готов + 0b01 + + + + + DCDIF + Флаг взводится при изменении входного сигнала DCD. Флаг сбрасывается записью 1 + [3:3] + read-write + oneToClear + + + 0 + Изменений сигнала не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + RIIF + Флаг взводится при изменении входного сигнала RI с 0 на 1. Флаг сбрасывается записью 1 + [2:2] + read-write + oneToClear + + + 0 + Изменений сигнала с 0 на 1 не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + DSRIF + Флаг взводится при изменении входного сигнала DSR. Флаг сбрасывается записью 1 + [1:1] + read-write + oneToClear + + + 0 + Изменений сигнала не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + + + + + USART_1 + приемо-передатчик + 0x00081800 + + 0x00 + 0x30 + registers + + + + CONTROL1 + Регистр управления 1 + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + M + M1[28] и M0[12] управляют длиной кадра. Примечание: Эти биты могут быть изменены только при остановке работы (UE=0) + [28:12] + read-write + + + 8bits + 8 бит данных + 0b00000000000000000 + + + 9bits + 9 бит данных + 0b00000000000000001 + + + 7bits + 7 бит данных + 0b10000000000000000 + + + + + PCE + Контроль четности. Примечание: Этот бит может быть изменен только при остановке работы (UE=0) + [10:10] + read-write + + + Disable + Контроль четности выключен + 0b00 + + + Enable + Контроль четности включен + 0b01 + + + + + PS + Выбор способа формирования бита четности. Примечание: Этот бит может быть изменен только при остановке работы (UE=0) + [9:9] + read-write + + + Parity + Бит четности + 0b00 + + + Odd + Бит нечетности + 0b01 + + + + + PEIE + Управление прерыванием при ошибке в принятом бите четности + [8:8] + read-write + + + Disable + Прерывание по ошибке в бите четности выключено + 0b00 + + + Enable + Прерывание по ошибке в бите четности включено + 0b01 + + + + + TXEIE + Управление прерыванием при передаче данных в момент записи данных в сдвиговый регистр + [7:7] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + TCIE + Управление прерыванием при успешной передаче данных + [6:6] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + RXNEIE + Управление прерыванием при успешном приеме данных или перезаписи полученных данных + [5:5] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + IDLEIE + Управление прерыванием при отсутствии входных транзакций + [4:4] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + TE + Управление передатчиком + [3:3] + read-write + + + Disable + Передатчик выключен + 0b00 + + + Enable + Передатчик включен + 0b01 + + + + + RE + Управление приемником + [2:2] + read-write + + + Disable + Приемник выключен + 0b00 + + + Enable + Приемник включен + 0b01 + + + + + UE + Ресет USART. Отменяет все текущие операции. Не очищает регистры конфигурации, но сбрасывает флаги + [0:0] + read-write + + + Disable + USART выключен + 0b00 + + + Enable + USART включен + 0b01 + + + + + + + CONTROL2 + Регистр управления 2 + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + MSBFIRST + Управление очередностью приема и передачи данных. Этот бит не влияет на передачу и прием бита четности. +Этот бит может быть изменен только при остановке работы (UE=0) + [19:19] + read-write + + + LSB + Начинать с 0 бита + 0b00 + + + MSB + Начинать с 9, 8 или 7 в зависимости от настроек длины посылки. + 0b01 + + + + + DATAINV + Управление полярностью принимаемых и передаваемых данных. Изменение полярности не влияет на бит четности. Этот бит может быть изменен только при остановке работы (UE=0) + [18:18] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + TXINV + Управление полярностью TX выхода. Регистр влияет не только на данные, но и на стоп биты, старт биты и тд. Этот бит может быть изменен только при остановке работы (UE=0) + [17:17] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + RXINV + Управление полярностью RX выхода. Регистр влияет не только на данные, но и на стоп биты, старт биты и тд. Этот бит может быть изменен только при остановке работы (UE=0) + [16:16] + read-write + + + Direct + Обычная полярность. 0 - низкий уровень, 1 - высокий уровень + 0b00 + + + Inverted + Обратная полярность. 1 - низкий уровень, 0 - высокий уровень + 0b01 + + + + + SWAP + Обмен функциями TX выхода и RX входа. Этот бит может быть изменен только при остановке работы (UE=0) + [15:15] + read-write + + + Normal + Обычное функционирование + 0b00 + + + Swap + Обмен функциями (TX = RX и RX = TX). + 0b01 + + + + + LBM + Регистр режима обратной внутренней петли. Этот бит может быть изменен только при остановке работы (UE=0) + [14:14] + read-write + + + Normal + Обычное функционирование + 0b00 + + + Loopback + Сигналы TX и RTS подаются внутрь блока в обход входов RX и CTS. При этом TX = 1 и RTS = 1, входы RX и CTS не активны + 0b01 + + + + + STOP_1 + Количество стоп битов для приемника и передатчика. Этот бит может быть изменен только при остановке работы (UE=0) + [13:13] + read-write + + + 1bit + 1 стоп бит + 0b00 + + + 2bits + 2 стоп бита + 0b01 + + + + + CLKEN + Управление синхронным режимом. Этот бит может быть изменен только при остановке работы (UE=0) + [11:11] + read-write + + + Asynchronous + Синхронный режим выключен + 0b00 + + + Synchronous + Синхронный режим включен + 0b01 + + + + + CPOL + Управление полярностью выходного тактового сигнала CK. Этот бит может быть изменен только при остановке работы (UE=0) + [10:10] + read-write + + + 0 + Логический «0» вне транзакции + 0b00 + + + 1 + Логическая «1» вне транзакции + 0b01 + + + + + CPHA + Управление фазой выходного тактового сигнала CK. Этот бит может быть изменен только при остановке работы (UE=0) + [9:9] + read-write + + + 0 + Первое изменение тактового сигнала – фронт + 0b00 + + + 1 + Первое изменение тактового сигнала – срез (обратный фронт). + 0b01 + + + + + LBCL + Управление последним тактовым импульсом. Этот бит может быть изменен только при остановке работы (UE=0) + [8:8] + read-write + + + 0 + Последний тактовый импульс отсутствует + 0b00 + + + 1 + Последний тактовый импульс присутствует. + 0b01 + + + + + LBDIE + Управление прерыванием при обнаружении break состояния на RX линии + [6:6] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + + + CONTROL3 + Регистр управления 3 + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + OVRDIS + Выбор реакции на переполнение. Этот бит может быть изменен только при остановке работы (UE=0) + [12:12] + read-write + + + 0 + При переполнении взводится флаг ошибки (ORE), новые данные не записываются + 0b00 + + + 1 + флаг переполнения не взводится, данные перезаписываются + 0b01 + + + + + CTSIE + Управление прерыванием при обнаружении изменения CTS + [10:10] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + CTSE + Выбор реакции на входной сигнал CTS. Этот бит может быть изменен только при остановке работы (UE=0) + [9:9] + read-write + + + Ignored + Сигнал игнорируется + 0b00 + + + Control + сигнал управляет передачей данных трансмиттером. Передача разрешена при (CTS = 0) + + 0b01 + + + + + RTSE + Управление выходным сигналом RTS. Этот бит может быть изменен только при остановке работы (UE=0) + [8:8] + read-write + + + 0 + Сигнал всегда в разрешающем состоянии (RTS = 0) + 0b00 + + + 1 + Сигнал находится в разрешающем состоянии (RTS = 0), только когда приемник готов принять данные + 0b01 + + + + + DMAT + Управление работой сигнала dma_trq + [7:7] + read-write + + + Disable + Сигнал выключен + 0b00 + + + Enable + Сигнал включен + 0b01 + + + + + DMAR + Управление работой сигнала dma_rrq + [6:6] + read-write + + + Disable + Сигнал выключен + 0b00 + + + Enable + Сигнал включен + 0b01 + + + + + HDSEL + Выбор между полудуплексным и дуплексным режимами работы. В полудуплексном режиме RX не используется, все данные передаются и принимаются через TX. При наличии данных на передачу происходит отправка данных в остальное время прием. Этот бит может быть изменен только при остановке работы (UE=0) + [3:3] + read-write + + + Duplex + Дуплексный режим работы + 0b00 + + + Half_duplex + Полудуплексный режим работы + 0b01 + + + + + SBKRQ + Переход передатчика в break состояние + [2:2] + read-write + + + Normal + Обычный режим работы + 0b00 + + + Break_tx + Состояние break на линии TX + 0b01 + + + + + EIE + Управление прерыванием при обнаружении ошибок приема данных (FE, ORE, NF) + [0:0] + read-write + + + Disable + Прерывание выключено + 0b00 + + + Enable + Прерывание включено + 0b01 + + + + + + + DIVIDER + Регистр настройки делителя + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + BRR + Значение делителя входного тактового сигнала (clk_in). +При BRR < 16 USART не активен +Бодрейт рассчитывается по следующей формуле: +BR = F/BRR, где BR - бодрейт, F - значение частоты входного тактового сигнала +Этот бит может быть изменен только при остановке работы (UE=0) + [15:0] + read-write + + + + + FLAGS + Регистр прерываний + 0x1C + read-write + 0x0 + 0xFFFFFFFF + + + REACK + Флаг готовности приемника к работе после снятия сброса (UE и RE) + [22:22] + read-only + + + Unready + Ресет UE и RE активен + 0b00 + + + Ready + Ресет UE и RE снят + 0b01 + + + + + TEACK + Флаг готовности передатчика к работе после снятия сброса (UE и TE) + [21:21] + read-only + + + Unready + Ресет UE и TE активен + 0b00 + + + Ready + Ресет UE и TE снят + 0b01 + + + + + BUSY + Флаг активности на линии RX + [16:16] + read-only + + + Inactive + Нет активности на линии RX + 0b00 + + + Active + Идет передача данных или break состояние + 0b01 + + + + + CTS + Флаг отображает текущее значение сигнала CTS + [10:10] + read-only + + + 0 + CTS = 0 + 0b00 + + + 1 + CTS = 1 + 0b01 + + + + + CTSIF + Флаг взводится при изменении значения сигнала CTS. Флаг сбрасывается записью 1 + [9:9] + read-write + oneToClear + + + 0 + Состояние CTS не менялось с момента сброса флага + 0b00 + + + 1 + Состояние CTS менялось с момента сброса флага + 0b01 + + + + + LBDF + Флаг обнаружения break состояния на линии RX. Флаг сбрасывается записью 1 + [8:8] + read-write + oneToClear + + + Not_detected + Состояние break не обнаружено с момента сброса флага + 0b00 + + + Detected + Состояние break обнаружено с момента сброса флага + 0b01 + + + + + TXE + Флаг взводится при передаче данных в момент записи данных в сдвиговый регистр. Флаг сбрасывается записью данных в регистр TDR или записью 1 + [7:7] + read-write + oneToClear + + + 0 + Данные не записывались в сдвиговый регистр с момента сброса флага + 0b00 + + + 1 + Данные записывались в сдвиговый регистр + 0b01 + + + + + TC + Флаг взводится при передаче данных в момент отправки последнего стоп бита. Флаг сбрасывается записью 1 + [6:6] + read-write + oneToClear + + + 0 + Данные не отправлялись с момента сброса флага + 0b00 + + + 1 + Данные отправлялись с момента сброса флага + 0b01 + + + + + RXNE + Флаг взводится при записи принятых данных в регистр RDR из сдвигового регистра. Флаг сбрасывается записью 1 или чтением регистра RDR + [5:5] + read-write + oneToClear + + + 0 + Данные не принимались после сброса флага + 0b00 + + + 1 + Данные принимались после сброса флага + 0b01 + + + + + IDLE + Флаг взводится при отсутствии активности на линии RX в течении 8 битовых тактов при взведенном флаге RXNE. Флаг сбрасывается записью 1 + [4:4] + read-write + oneToClear + + + 0 + Состояние idle не обнаружено после сброса флага + 0b00 + + + 1 + Состояние idle обнаружено после сброса флага + 0b01 + + + + + ORE + Флаг взводится при попытке перезаписи RDR. Флаг сбрасывается записью 1 + [3:3] + read-write + oneToClear + + + 0 + Попыток перезаписи не обнаружено с момента сброса флага + 0b00 + + + 1 + Попытка перезаписи обнаружена с момента сброса флага + 0b01 + + + + + NF + Флаг обнаружения ложных переключений на линии RX. Флаг сбрасывается записью 1 + [2:2] + read-write + oneToClear + + + 0 + Помех не обнаружено с момента сброса флага + 0b00 + + + 1 + Помехи обнаружены с момента сброса флага + 0b01 + + + + + FE + Флаг взводится при обнаружении ошибок в стоп бите или битах. Флаг сбрасывается записью 1 + [1:1] + read-write + oneToClear + + + 0 + Ошибок приема не обнаружено с момента сброса флага + 0b00 + + + 1 + Ошибка приема обнаружена с момента сброса флага + 0b01 + + + + + PE + Флаг обнаружения ошибочного бита четности. Флаг сбрасывается записью 1 + [0:0] + read-write + oneToClear + + + 0 + Ошибок в битах четности не обнаружено с момента сброса флага + 0b00 + + + 1 + Ошибка в бите четности обнаружена с момента сброса флага + 0b01 + + + + + + + RXDATA + Регистр принятых данных + 0x24 + read-only + 0x0 + 0xFFFFFFFF + + + RDR + Принятые данные + [8:0] + read-only + + + + + TXDATA + Регистр передаваемых данных + 0x28 + read-write + 0x0 + 0xFFFFFFFF + + + TDR + Передаваемые данные + [8:0] + read-write + + + + + MODEM + Регистр управления модемом + 0x2C + 0x0 + 0xFFFFFFFF + + + DTR + Регистр управления сигналом DTR + [12:12] + read-write + + + Unready + Отсутствие сигнала готовности + 0b00 + + + Ready + Готовность к приему данных + 0b01 + + + + + DCD + Регистр содержит текущее значение сигнала DCD + [7:7] + read-only + + + 0 + Отсутствие несущей + 0b00 + + + 1 + Обнаружение несущей + 0b01 + + + + + RI + Регистр содержит текущее значение сигнала RI + [6:6] + read-only + + + 0 + Отсутствие звонка + 0b00 + + + 1 + Звонок (вызов) на телефонной линии + 0b01 + + + + + DSR + Регистр содержит текущее значение сигнала DSR + [5:5] + read-only + + + Unready + Источник данных не готов + 0b00 + + + Ready + Источник данных готов + 0b01 + + + + + DCDIF + Флаг взводится при изменении входного сигнала DCD. Флаг сбрасывается записью 1 + [3:3] + read-write + oneToClear + + + 0 + Изменений сигнала не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + RIIF + Флаг взводится при изменении входного сигнала RI с 0 на 1. Флаг сбрасывается записью 1 + [2:2] + read-write + oneToClear + + + 0 + Изменений сигнала с 0 на 1 не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + DSRIF + Флаг взводится при изменении входного сигнала DSR. Флаг сбрасывается записью 1 + [1:1] + read-write + oneToClear + + + 0 + Изменений сигнала не обнаружено с момента сброса флага + 0b00 + + + 1 + Сигнал изменен с момента сброса флага + 0b01 + + + + + + + + + TIMER16_0 + Регистры модуля таймера_0 + 0x00081C00 + + 0x00 + 0x20 + registers + + + + ISR + Регистр флагов прерываний + 0x00 + read-only + 0x0 + 0xFFFFFFFF + + + DOWN + Изменение направления счетчика вверх на вниз. В режиме энкодера бит DOWN устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вверх" на "вниз". + [6:6] + read-only + + + UP + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [5:5] + read-only + + + ARROK + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [4:4] + read-only + + + CMPOK + Обновление регистра сравнения OK. CMPOK устанавливается аппаратными средствами, чтобы сообщить приложению, что операция записи в регистр CMP шины APB успешно завершена. + [3:3] + read-only + + + EXTTRIG + Cобытие фронта внешнего триггера. EXTTRIG устанавливается аппаратно, чтобы сообщить приложению, что на выбранном входе внешнего триггера возник достоверный фронт импульса. Если триггер игнорируется, так как таймер уже запущен, то этот флаг не устанавливается + [2:2] + read-only + + + ARRM + Cоответствие автозагрузки. ARRM устанавливается аппаратурой, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра ARR. + [1:1] + read-only + + + CMPM + Совпадение сравнения. Бит CMPM устанавливается аппаратными средствами, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра CMP + [0:0] + read-only + + + + + ICR + Регистр сброса флагов прерываний + 0x04 + write-only + 0x0 + 0xFFFFFFFF + oneToClear + + + DOWNCF + Запись «1» в этот бит снимает флаг DOWN в регистре LPT_ISR + [6:6] + write-only + oneToClear + + + UPCF + Запись «1» в этот бит снимает флаг UP в регистре LPT_ISR + [5:5] + write-only + oneToClear + + + ARRROCF + Запись «1» в этот бит снимает флаг ARROK в регистре LPT_ISR + [4:4] + write-only + oneToClear + + + EXTTRIGCF + Запись «1» в этот бит снимает флаг EXTTRIG в регистре LPT_ISR + [2:2] + write-only + oneToClear + + + ARRMCF + Запись «1» в этот бит снимает флаг ARRM в регистре LPT_ISR + [1:1] + write-only + oneToClear + + + CMPMCF + Запись «1» в этот бит снимает флаг CMPM в регистре LPT_ISR + [0:0] + write-only + oneToClear + + + + + IER + Регистр разрешения прерываний + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + DOWNIE + запрет/разрешение прерывания DOWN + [6:6] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + UPIE + запрет/разрешение прерывания UP + [5:5] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARROKIE + запрет/разрешение прерывания ARRROK + [4:4] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPOKIE + запрет/разрешение прерывания CMPOK + [3:3] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + EXTTRIGIE + запрет/разрешение прерывания EXTTRIG + [2:2] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARRMIE + запрет/разрешение прерывания ARRM + [1:1] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPMIE + запрет/разрешение прерывания CMPM + [0:0] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + + + CFGR + Регистр конфигурации + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + ENC + Разрешение режима энкодера. Бит ENC управляет режимом работы энкодера + [24:24] + read-write + + + Disable + Режим энкодера отключен + 0b00 + + + Enable + Режим энкодера включен + 0b01 + + + + + COUNT_MODE + Бит COUNTMODE выбирает, какой источник тактового сигнала используется TIMER16 для синхронизации счетчика + [23:23] + read-write + + + Internal + Счетчик инкрементируется после каждого внутреннего тактового импульса + 0b00 + + + External + Счетчик увеличивается после каждого действительного тактового импульса на внешнем lnput1 TIMER16 + 0b01 + + + + + PRELOAD + Режим обновления регистров. Бит PRELOAD управляет модальностью обновления регистров ARR и CMP + [22:22] + read-write + + + After_write + Регистры обновляются после каждого доступа к записи на шине APB + 0b00 + + + End_period + Регистры обновляются в конце текущего периода TIMER16 + 0b01 + + + + + WAVWPOL + Полярность формы волны. Бит WAVEPOL управляет полярностью выходного сигнала + [21:21] + read-write + + + Noninverted + Выход TIMER16 отражает результаты сравнения между регистрами ARR и CMP + 0b00 + + + Inverted + Выход TIMER16 отражает инверсные результаты сравнения между регистрами ARR и CMP + 0b01 + + + + + WAVE + Форма волны. Бит WAVE управляет формой выходного сигнала + [20:20] + read-write + + + PWM_or_OneShot + Деактивировать режим Set-once, форма волны ШИМ (PWM) / один импульс (One shot) + 0b00 + + + Set_once + Активировать режим Set-once + 0b01 + + + + + TIMEOUT + Разрешение тайм-аута. Бит TIMOUT управляет функцией тайм-аута + [19:19] + read-write + + + Trigger_event_ignor + Триггерное событие, поступающее, когда таймер уже запущен, будет проигнорировано + 0b00 + + + Trigger_event_restart + Триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик + 0b01 + + + + + TRIGEN + Разрешение и полярность триггера.Бит TRIGEN управляет тем, запускается ли счетчик TIMER16 внешним триггером или нет. Если выбрана опция внешнего запуска, возможны три конфигурации активного фронта триггера + [18:17] + read-write + + + Software + Программный триггер (начало отсчета инициируется программно) + 0b00 + + + Rising + Нарастающий фронт является активным фронтом + 0b01 + + + Falling + Падающий фронт является активным фронтом + 0b10 + + + Both_edge + Оба фронта являются активными фронтами энергопотреблением + 0b11 + + + + + TRIGSEL + Селектор триггера. Биты TRIGSEL выбирают источник триггера, который будет служить событием запуска для TIMER16, из 8 доступных источников. + [15:13] + read-write + + + GPIO0_7 + Источник триггера GPIO0_7 + 0b000 + + + GPIO0_4 + Источник триггера GPIO0_4 + 0b001 + + + GPIO0_15 + Источник триггера GPIO0_15 + 0b010 + + + GPIO0_14 + Источник триггера GPIO0_14 + 0b011 + + + TSENS + Источник триггера - окончание преобразования термосенсора + 0b100 + + + ADC + окончание преобразования АЦП + 0b101 + + + RTC_IRQ + Источник триггера - прерывание RTC + 0b110 + + + ALARM + Будильник + 0b111 + + + + + PRESC + Делитель частоты. Биты PRESC задают коэффициент деления делителя. /n + [11:9] + read-write + + + 1 + Делитель 1 + 0b000 + + + 2 + Делитель 2 + 0b001 + + + 4 + Делитель 4 + 0b010 + + + 8 + Делитель 8 + 0b011 + + + 16 + Делитель 16 + 0b100 + + + 32 + Делитель 32 + 0b101 + + + 64 + Делитель 64 + 0b110 + + + 128 + Делитель 128 + 0b111 + + + + + TRGFLT + Конфигурируемый цифровой фильтр для триггера. Значение TRGFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня на внутреннем триггере, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие источника внутреннего тактового сигнала. + [7:6] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKFLT + Конфигурируемый цифровой фильтр для внешнего тактового генератора. Значение CKFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня внешнего тактового сигнала, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие внутреннего источника тактового сигнала. + [4:3] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKPOL + Полярность синхронизации. Когда TIMER16 тактируется внешним ис-точником тактового сигнала, биты CKPOL используются для настройки активного фронта или фронтов, используемых счетчиком + [2:1] + read-write + + + Rising + Нарастающий фронт является активным фронтом, используемым для подсчета + 0b00 + + + Falling + Спадающий фронт является активным фронтом, используемым для подсчета + 0b01 + + + Both_edge + Оба фронта являются активными фронтами. Когда оба фронта внешнего тактового сигнала считаются активными, TIMER16 должен также тактироваться внутренним источником тактового сигнала с частотой, по крайней мере в четыре раза превышающей частоту внешнего тактового сигнала. + 0b10 + + + + + CKSEL + Селектор тактовых импульсов. Бит CKSEL выбирает, какой источник тактовых импульсов будет использовать TIMER16 + [0:0] + read-write + + + Internal + TIMER16 тактируется внутренним источником тактового сигнала (APB тактовый генератор или любой из встроенных генераторов) + 0b00 + + + External + TIMER16 тактируется внешним источником тактового сигнала через внешний lnput1 TIMER16 + 0b01 + + + + + + + CR + Регистр управления + 0x10 + + + CNTSTRT + Запуск таймера в непрерывном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в непрерывном режиме. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает таймер в непрерывном режиме, как только будет обнаружен внешний триггер. +Если этот бит установлен, когда идет счет в режиме одиночного импульса, то таймер не остановится при очередном совпадении регистров ARR и CNT, и счетчик TIMER16 продолжит счет в непрерывном режиме. Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [2:2] + read-write + + + SNGSTRT + Запуск TIMER16 в одиночном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса, как только обнаруживается внешний триггер. Если этот бит установлен, когда TIMER16 находится в режиме непрерывного счета, то TIMER16 остановится при следующем совпадении регистров ARR и CNT. +Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [1:1] + read-write + + + ENABLE + Разрешение TIMER16. Бит ENABLE устанавливается и очищается программно + [0:0] + read-write + + + + + CMP + Регистр сравнения + 0x14 + + + Reserved + Зарезервировано + [31:16] + + + CMP + Сравниваемое значение. CMP - это значение сравнения, используемое TIMER16. Примечание: Регистр CMP может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + ARR + Регистр автоматической перезагрузки + 0x18 + + + Reserved + Зарезервировано + [31:16] + + + ARR + Значение автоматической перезагрузки +ARR - значение автозагрузки для TIMER16. Это значение должно быть строго больше, чем значение CMP[15:0]. Примечание: Регистр ARR может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + CNT + Регистр счётчика + 0x1C + + + Reserved + Зарезервировано + [31:16] + + + CNT + Значение счетчика. Когда TIMER16 работает с асинхронными тактовыми сигналами, чтение регистра CNT может вернуть недостоверные значения. Поэтому в этом случае необходимо выполнить два последовательных доступа на чтение и убедиться, что два возвращенных значения идентичны. + [15:0] + read-only + + + + + + + TIMER16_1 + Регистры модуля таймера_1 + 0x00082000 + + 0x00 + 0x20 + registers + + + + ISR + Регистр флагов прерываний + 0x00 + read-only + 0x0 + 0xFFFFFFFF + + + DOWN + Изменение направления счетчика вверх на вниз. В режиме энкодера бит DOWN устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вверх" на "вниз". + [6:6] + read-only + + + UP + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [5:5] + read-only + + + ARROK + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [4:4] + read-only + + + CMPOK + Обновление регистра сравнения OK. CMPOK устанавливается аппаратными средствами, чтобы сообщить приложению, что операция записи в регистр CMP шины APB успешно завершена. + [3:3] + read-only + + + EXTTRIG + Cобытие фронта внешнего триггера. EXTTRIG устанавливается аппаратно, чтобы сообщить приложению, что на выбранном входе внешнего триггера возник достоверный фронт импульса. Если триггер игнорируется, так как таймер уже запущен, то этот флаг не устанавливается + [2:2] + read-only + + + ARRM + Cоответствие автозагрузки. ARRM устанавливается аппаратурой, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра ARR. + [1:1] + read-only + + + CMPM + Совпадение сравнения. Бит CMPM устанавливается аппаратными средствами, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра CMP + [0:0] + read-only + + + + + ICR + Регистр сброса флагов прерываний + 0x04 + write-only + 0x0 + 0xFFFFFFFF + oneToClear + + + DOWNCF + Запись «1» в этот бит снимает флаг DOWN в регистре LPT_ISR + [6:6] + write-only + oneToClear + + + UPCF + Запись «1» в этот бит снимает флаг UP в регистре LPT_ISR + [5:5] + write-only + oneToClear + + + ARRROCF + Запись «1» в этот бит снимает флаг ARROK в регистре LPT_ISR + [4:4] + write-only + oneToClear + + + EXTTRIGCF + Запись «1» в этот бит снимает флаг EXTTRIG в регистре LPT_ISR + [2:2] + write-only + oneToClear + + + ARRMCF + Запись «1» в этот бит снимает флаг ARRM в регистре LPT_ISR + [1:1] + write-only + oneToClear + + + CMPMCF + Запись «1» в этот бит снимает флаг CMPM в регистре LPT_ISR + [0:0] + write-only + oneToClear + + + + + IER + Регистр разрешения прерываний + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + DOWNIE + запрет/разрешение прерывания DOWN + [6:6] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + UPIE + запрет/разрешение прерывания UP + [5:5] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARROKIE + запрет/разрешение прерывания ARRROK + [4:4] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPOKIE + запрет/разрешение прерывания CMPOK + [3:3] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + EXTTRIGIE + запрет/разрешение прерывания EXTTRIG + [2:2] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARRMIE + запрет/разрешение прерывания ARRM + [1:1] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPMIE + запрет/разрешение прерывания CMPM + [0:0] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + + + CFGR + Регистр конфигурации + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + ENC + Разрешение режима энкодера. Бит ENC управляет режимом работы энкодера + [24:24] + read-write + + + Disable + Режим энкодера отключен + 0b00 + + + Enable + Режим энэнкодера включен + 0b01 + + + + + COUNT_MODE + Бит COUNTMODE выбирает, какой источник тактового сигнала используется TIMER16 для синхронизации счетчика + [23:23] + read-write + + + Internal + Счетчик инкрементируется после каждого внутреннего тактового импульса + 0b00 + + + External + Счетчик увеличивается после каждого действительного тактового импульса на внешнем lnput1 TIMER16 + 0b01 + + + + + PRELOAD + Режим обновления регистров. Бит PRELOAD управляет модальностью обновления регистров ARR и CMP + [22:22] + read-write + + + After_write + Регистры обновляются после каждого доступа к записи на шине APB + 0b00 + + + End_period + Регистры обновляются в конце текущего периода TIMER16 + 0b01 + + + + + WAVWPOL + Полярность формы волны. Бит WAVEPOL управляет полярностью выходного сигнала + [21:21] + read-write + + + Noninverted + Выход TIMER16 отражает результаты сравнения между регистрами ARR и CMP + 0b00 + + + Inverted + Выход TIMER16 отражает инверсные результаты сравнения между регистрами ARR и CMP + 0b01 + + + + + WAVE + Форма волны. Бит WAVE управляет формой выходного сигнала + [20:20] + read-write + + + PWM_or_OneShot + Деактивировать режим Set-once, форма волны ШИМ (PWM) / один импульс (One shot) + 0b00 + + + Set_once + Активировать режим Set-once + 0b01 + + + + + TIMEOUT + Разрешение тайм-аута. Бит TIMOUT управляет функцией тайм-аута + [19:19] + read-write + + + Trigger_event_ignor + Триггерное событие, поступающее, когда таймер уже запущен, будет проигнорировано + 0b00 + + + Trigger_event_restart + Триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик + 0b01 + + + + + TRIGEN + Разрешение и полярность триггера.Бит TRIGEN управляет тем, запускается ли счетчик TIMER16 внешним триггером или нет. Если выбрана опция внешнего запуска, возможны три конфигурации активного фронта триггера + [18:17] + read-write + + + Software + Программный триггер (начало отсчета инициируется программно) + 0b00 + + + Rising + Нарастающий фронт является активным фронтом + 0b01 + + + Falling + Падающий фронт является активным фронтом + 0b10 + + + Both_edge + Оба фронта являются активными фронтами энергопотреблением + 0b11 + + + + + TRIGSEL + Селектор триггера. Биты TRIGSEL выбирают источник триггера, который будет служить событием запуска для TIMER16, из 8 доступных источников. + [15:13] + read-write + + + GPIO1_9 + Источник триггера GPIO1_9 + 0b000 + + + GPIO1_8 + Источник триггера GPIO1_8 + 0b001 + + + GPIO1_7 + Источник триггера GPIO1_7 + 0b010 + + + GPIO1_6 + Источник триггера GPIO1_6 + 0b011 + + + TSENS + Источник триггера - окончание преобразования термосенсора + 0b100 + + + ADC + окончание преобразования АЦП + 0b101 + + + RTC_IRQ + Источник триггера - прерывание RTC + 0b110 + + + ALARM + Будильник + 0b111 + + + + + PRESC + Делитель частоты. Биты PRESC задают коэффициент деления делителя. /n + [11:9] + read-write + + + 1 + Делитель 1 + 0b000 + + + 2 + Делитель 2 + 0b001 + + + 4 + Делитель 4 + 0b010 + + + 8 + Делитель 8 + 0b011 + + + 16 + Делитель 16 + 0b100 + + + 32 + Делитель 32 + 0b101 + + + 64 + Делитель 64 + 0b110 + + + 128 + Делитель 128 + 0b111 + + + + + TRGFLT + Конфигурируемый цифровой фильтр для триггера. Значение TRGFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня на внутреннем триггере, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие источника внутреннего тактового сигнала. + [7:6] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKFLT + Конфигурируемый цифровой фильтр для внешнего тактового генератора. Значение CKFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня внешнего тактового сигнала, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие внутреннего источника тактового сигнала. + [4:3] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKPOL + Полярность синхронизации. Когда TIMER16 тактируется внешним ис-точником тактового сигнала, биты CKPOL используются для настройки активного фронта или фронтов, используемых счетчиком + [2:1] + read-write + + + Rising + Нарастающий фронт является активным фронтом, используемым для подсчета + 0b00 + + + Falling + Спадающий фронт является активным фронтом, используемым для подсчета + 0b01 + + + Both_edge + Оба фронта являются активными фронтами. Когда оба фронта внешнего тактового сигнала считаются активными, TIMER16 должен также тактироваться внутренним источником тактового сигнала с частотой, по крайней мере в четыре раза превышающей частоту внешнего тактового сигнала. + 0b10 + + + + + CKSEL + Селектор тактовых импульсов. Бит CKSEL выбирает, какой источник тактовых импульсов будет использовать TIMER16 + [0:0] + read-write + + + Internal + TIMER16 тактируется внутренним источником тактового сигнала (APB тактовый генератор или любой из встроенных генераторов) + 0b00 + + + External + TIMER16 тактируется внешним источником тактового сигнала через внешний lnput1 TIMER16 + 0b01 + + + + + + + CR + Регистр управления + 0x10 + + + CNTSTRT + Запуск таймера в непрерывном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в непрерывном режиме. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает таймер в непрерывном режиме, как только будет обнаружен внешний триггер. +Если этот бит установлен, когда идет счет в режиме одиночного импульса, то таймер не остановится при очередном совпадении регистров ARR и CNT, и счетчик TIMER16 продолжит счет в непрерывном режиме. Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [2:2] + read-write + + + SNGSTRT + Запуск TIMER16 в одиночном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса, как только обнаруживается внешний триггер. Если этот бит установлен, когда TIMER16 находится в режиме непрерывного счета, то TIMER16 остановится при следующем совпадении регистров ARR и CNT. +Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [1:1] + read-write + + + ENABLE + Разрешение TIMER16. Бит ENABLE устанавливается и очищается программно + [0:0] + read-write + + + + + CMP + Регистр сравнения + 0x14 + + + Reserved + Зарезервировано + [31:16] + + + CMP + Сравниваемое значение. CMP - это значение сравнения, используемое TIMER16. Примечание: Регистр CMP может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + ARR + Регистр автоматической перезагрузки + 0x18 + + + Reserved + Зарезервировано + [31:16] + + + ARR + Значение автоматической перезагрузки +ARR - значение автозагрузки для TIMER16. Это значение должно быть строго больше, чем значение CMP[15:0]. Примечание: Регистр ARR может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + CNT + Регистр счётчика + 0x1C + + + Reserved + Зарезервировано + [31:16] + + + CNT + Значение счетчика. Когда TIMER16 работает с асинхронными тактовыми сигналами, чтение регистра CNT может вернуть недостоверные значения. Поэтому в этом случае необходимо выполнить два последовательных доступа на чтение и убедиться, что два возвращенных значения идентичны. + [15:0] + read-only + + + + + + + TIMER16_2 + Регистры модуля таймера_2 + 0x00082400 + + 0x00 + 0x20 + registers + + + + ISR + Регистр флагов прерываний + 0x00 + read-only + 0x0 + 0xFFFFFFFF + + + DOWN + Изменение направления счетчика вверх на вниз. В режиме энкодера бит DOWN устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вверх" на "вниз". + [6:6] + read-only + + + UP + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [5:5] + read-only + + + ARROK + Изменение направления счетчика с вниз на вверх. В режиме энкодера бит UP устанавливается аппаратно, чтобы сообщить приложению, что направление счетчика изменилось с "вниз" на "вверх". + [4:4] + read-only + + + CMPOK + Обновление регистра сравнения OK. CMPOK устанавливается аппаратными средствами, чтобы сообщить приложению, что операция записи в регистр CMP шины APB успешно завершена. + [3:3] + read-only + + + EXTTRIG + Cобытие фронта внешнего триггера. EXTTRIG устанавливается аппаратно, чтобы сообщить приложению, что на выбранном входе внешнего триггера возник достоверный фронт импульса. Если триггер игнорируется, так как таймер уже запущен, то этот флаг не устанавливается + [2:2] + read-only + + + ARRM + Cоответствие автозагрузки. ARRM устанавливается аппаратурой, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра ARR. + [1:1] + read-only + + + CMPM + Совпадение сравнения. Бит CMPM устанавливается аппаратными средствами, чтобы сообщить приложению, что значение регистра CNT достигло значения регистра CMP + [0:0] + read-only + + + + + ICR + Регистр сброса флагов прерываний + 0x04 + write-only + 0x0 + 0xFFFFFFFF + oneToClear + + + DOWNCF + Запись «1» в этот бит снимает флаг DOWN в регистре LPT_ISR + [6:6] + write-only + oneToClear + + + UPCF + Запись «1» в этот бит снимает флаг UP в регистре LPT_ISR + [5:5] + write-only + oneToClear + + + ARRROCF + Запись «1» в этот бит снимает флаг ARROK в регистре LPT_ISR + [4:4] + write-only + oneToClear + + + EXTTRIGCF + Запись «1» в этот бит снимает флаг EXTTRIG в регистре LPT_ISR + [2:2] + write-only + oneToClear + + + ARRMCF + Запись «1» в этот бит снимает флаг ARRM в регистре LPT_ISR + [1:1] + write-only + oneToClear + + + CMPMCF + Запись «1» в этот бит снимает флаг CMPM в регистре LPT_ISR + [0:0] + write-only + oneToClear + + + + + IER + Регистр разрешения прерываний + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + DOWNIE + запрет/разрешение прерывания DOWN + [6:6] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + UPIE + запрет/разрешение прерывания UP + [5:5] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARROKIE + запрет/разрешение прерывания ARRROK + [4:4] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPOKIE + запрет/разрешение прерывания CMPOK + [3:3] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + EXTTRIGIE + запрет/разрешение прерывания EXTTRIG + [2:2] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ARRMIE + запрет/разрешение прерывания ARRM + [1:1] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + CMPMIE + запрет/разрешение прерывания CMPM + [0:0] + read-write + + + Disable + Прерывание запрешено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + + + CFGR + Регистр конфигурации + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + ENC + Разрешение режима энкодера. Бит ENC управляет режимом работы энкодера + [24:24] + read-write + + + Disable + Режим энкодера отключен + 0b00 + + + Enable + Режим энэнкодера включен + 0b01 + + + + + COUNT_MODE + Бит COUNTMODE выбирает, какой источник тактового сигнала используется TIMER16 для синхронизации счетчика + [23:23] + read-write + + + Internal + Счетчик инкрементируется после каждого внутреннего тактового импульса + 0b00 + + + External + Счетчик увеличивается после каждого действительного тактового импульса на внешнем lnput1 TIMER16 + 0b01 + + + + + PRELOAD + Режим обновления регистров. Бит PRELOAD управляет модальностью обновления регистров ARR и CMP + [22:22] + read-write + + + After_write + Регистры обновляются после каждого доступа к записи на шине APB + 0b00 + + + End_period + Регистры обновляются в конце текущего периода TIMER16 + 0b01 + + + + + WAVWPOL + Полярность формы волны. Бит WAVEPOL управляет полярностью выходного сигнала + [21:21] + read-write + + + Noninverted + Выход TIMER16 отражает результаты сравнения между регистрами ARR и CMP + 0b00 + + + Inverted + Выход TIMER16 отражает инверсные результаты сравнения между регистрами ARR и CMP + 0b01 + + + + + WAVE + Форма волны. Бит WAVE управляет формой выходного сигнала + [20:20] + read-write + + + PWM_or_OneShot + Деактивировать режим Set-once, форма волны ШИМ (PWM) / один импульс (One shot) + 0b00 + + + Set_once + Активировать режим Set-once + 0b01 + + + + + TIMEOUT + Разрешение тайм-аута. Бит TIMOUT управляет функцией тайм-аута + [19:19] + read-write + + + Trigger_event_ignor + Триггерное событие, поступающее, когда таймер уже запущен, будет проигнорировано + 0b00 + + + Trigger_event_restart + Триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик + 0b01 + + + + + TRIGEN + Разрешение и полярность триггера.Бит TRIGEN управляет тем, запускается ли счетчик TIMER16 внешним триггером или нет. Если выбрана опция внешнего запуска, возможны три конфигурации активного фронта триггера + [18:17] + read-write + + + Software + Программный триггер (начало отсчета инициируется программно) + 0b00 + + + Rising + Нарастающий фронт является активным фронтом + 0b01 + + + Falling + Падающий фронт является активным фронтом + 0b10 + + + Both_edge + Оба фронта являются активными фронтами энергопотреблением + 0b11 + + + + + TRIGSEL + Селектор триггера. Биты TRIGSEL выбирают источник триггера, который будет служить событием запуска для TIMER16, из 8 доступных источников. + [15:13] + read-write + + + GPIO2_3 + Источник триггера GPIO2_3 + 0b000 + + + GPIO2_2 + Источник триггера GPIO2_2 + 0b001 + + + GPIO2_1 + Источник триггера GPIO2_1 + 0b010 + + + GPIO2_0 + Источник триггера GPIO2_0 + 0b011 + + + TSENS + Источник триггера - окончание преобразования термосенсора + 0b100 + + + ADC + окончание преобразования АЦП + 0b101 + + + RTC_IRQ + Источник триггера - прерывание RTC + 0b110 + + + ALARM + Будильник + 0b111 + + + + + PRESC + Делитель частоты. Биты PRESC задают коэффициент деления делителя. /n + [11:9] + read-write + + + 1 + Делитель 1 + 0b000 + + + 2 + Делитель 2 + 0b001 + + + 4 + Делитель 4 + 0b010 + + + 8 + Делитель 8 + 0b011 + + + 16 + Делитель 16 + 0b100 + + + 32 + Делитель 32 + 0b101 + + + 64 + Делитель 64 + 0b110 + + + 128 + Делитель 128 + 0b111 + + + + + TRGFLT + Конфигурируемый цифровой фильтр для триггера. Значение TRGFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня на внутреннем триггере, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие источника внутреннего тактового сигнала. + [7:6] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKFLT + Конфигурируемый цифровой фильтр для внешнего тактового генератора. Значение CKFLT устанавливает количество последовательных одинаковых выборок, которые должны быть обнаружены при изменении уровня внешнего тактового сигнала, прежде чем это будет считаться действительным переходом уровня. Для использования этой функции необходимо наличие внутреннего источника тактового сигнала. + [4:3] + read-write + + + Disable + Любое изменение активного уровня триггера читается действительным триггером + 0b00 + + + 2CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 2 тактовых периодов, прежде чем он будет считаться действительным триггером. + 0b01 + + + 4CLOCK + Изменение активного уровня триггера должно быть стабильным в течение как минимум 4 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b10 + + + 8CLOCK + Изменение активного уровня триггера должно быть стабильным в течение не менее 8 тактовых периодов, прежде чем он будет считаться действительным триггером + 0b11 + + + + + CKPOL + Полярность синхронизации. Когда TIMER16 тактируется внешним ис-точником тактового сигнала, биты CKPOL используются для настройки активного фронта или фронтов, используемых счетчиком + [2:1] + read-write + + + Rising + Нарастающий фронт является активным фронтом, используемым для подсчета + 0b00 + + + Falling + Спадающий фронт является активным фронтом, используемым для подсчета + 0b01 + + + Both_edge + Оба фронта являются активными фронтами. Когда оба фронта внешнего тактового сигнала считаются активными, TIMER16 должен также тактироваться внутренним источником тактового сигнала с частотой, по крайней мере в четыре раза превышающей частоту внешнего тактового сигнала. + 0b10 + + + + + CKSEL + Селектор тактовых импульсов. Бит CKSEL выбирает, какой источник тактовых импульсов будет использо-вать TIMER16 + [0:0] + read-write + + + Internal + TIMER16 тактируется внутренним источником тактового сигнала (APB тактовый генератор или любой из встроенных генераторов) + 0b00 + + + External + TIMER16 тактируется внешним источником тактового сигнала через внешний lnput1 TIMER16 + 0b01 + + + + + + + CR + Регистр управления + 0x10 + + + CNTSTRT + Запуск таймера в непрерывном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в непрерывном режиме. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает таймер в непрерывном режиме, как только будет обнаружен внешний триггер. +Если этот бит установлен, когда идет счет в режиме одиночного импульса, то таймер не остановится при очередном совпадении регистров ARR и CNT, и счетчик TIMER16 продолжит счет в непрерывном режиме. Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [2:2] + read-write + + + SNGSTRT + Запуск TIMER16 в одиночном режиме +Этот бит устанавливается программно и очищается аппаратно. +В случае программного запуска (TRIGEN[1:0] = '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса. Если программный запуск отключен (TRIGEN[1:0] отличен от '00'), установка этого бита запускает TIMER16 в режиме одиночного импульса, как только обнаруживается внешний триггер. Если этот бит установлен, когда TIMER16 находится в режиме непрерывного счета, то TIMER16 остановится при следующем совпадении регистров ARR и CNT. +Этот бит может быть установлен только при включенном TIMER16. Он будет автоматически сброшен аппаратными средствами. + [1:1] + read-write + + + ENABLE + Разрешение TIMER16. Бит ENABLE устанавливается и очищается программно + [0:0] + read-write + + + + + CMP + Регистр сравнения + 0x14 + + + Reserved + Зарезервировано + [31:16] + + + CMP + Сравниваемое значение. CMP - это значение сравнения, используемое TIMER16. Примечание: Регистр CMP может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + ARR + Регистр автоматической перезагрузки + 0x18 + + + Reserved + Зарезервировано + [31:16] + + + ARR + Значение автоматической перезагрузки +ARR - значение автозагрузки для TIMER16. Это значение должно быть строго больше, чем значение CMP[15:0]. Примечание: Регистр ARR может быть изменен только тогда, когда TIMER16 включен (бит ENABLE установлен в '1'). + [15:0] + read-write + + + + + CNT + Регистр счётчика + 0x1C + + + Reserved + Зарезервировано + [31:16] + + + CNT + Значение счетчика. Когда TIMER16 работает с асинхронными тактовыми сигналами, чтение регистра CNT может вернуть недостоверные значения. Поэтому в этом случае необходимо выполнить два последовательных доступа на чтение и убедиться, что два возвращенных значения идентичны. + [15:0] + read-only + + + + + + + TIMER32_1 + регистры модуля таймера_1 + 0x00082800 + + 0x0 + 0xBC + registers + + + + VALUE + 0x00 + + + TIM_VAL + текущее значение счетчика + [31:0] + read-only + + + + + TOP + максимальное значение счетной последовательности + 0x04 + 0xFFFFFFFF + 0xFFFFFFFF + + + TIM_TOP + максимальное значение счетчика (ограничивает счетную последовательность сверху) + [31:0] + read-write + + + + + PRESCALE + значение делителя + 0x08 + 0x0 + 0xFFFFFFFF + + + TIM_PRESCALE + Значение предварительного делителя. Предделитель вырабатывает тактовый сигнал для счета, частота которого в целое раз меньше входной + [31:0] + read-write + + + + + CONTROL + Конфигурационный регистр основного таймера + 0x0C + 0x0 + + + Reserved + Зарезервировано + [31:4] + + + SOURCE + Выбор источника тактового сигнала для счета + [3:2] + read-write + + + APB_P_CLK + частота тактов шины APB_P + 0b00 + + + TIM1 + Синхронный вход тактирования TIM1 + 0b01 + + + TIMER32_1_Tx + Вход микросхемы timer1_Tx_pin_pad + 0b10 + + + TIM2 + Асинхронный вход тактирования TIM2 + 0b11 + + + + + COUNT_MODE + Режим счёта таймера + [1:0] + read-write + + + Direct + Прямой режим + 0b00 + + + Reverse + Обратный режим + 0b01 + + + Bidirectional + Двунаправленный режим + 0b10 + + + + + + + ENABLE + Регистр включения таймера + 0x10 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:2] + + + TIM_CLR + Сброс (обнуление) текущего значения счетчика при записи «1» + [1:1] + writeOnce + + + TIM_EN + Запуск/остановка работы счетчика + [0:0] + read-write + + + Disable + Счетчик выключен + 0b00 + + + Enable + Счетчик работает + 0b01 + + + + + + + INT_MASK + Регистр маски прерываний + 0x14 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Маска прерывания совпадения 4 канала таймера + [9:9] + read-write + + + OC_Int_CH3 + Маска прерывания совпадения 3 канала таймера + [8:8] + read-write + + + OC_Int_CH2 + Маска прерывания совпадения 2 канала таймера + [7:7] + read-write + + + OC_Int_CH1 + Маска прерывания совпадения 1 канала таймера + [6:6] + read-write + + + IC_Int_CH4 + Маска прерывания захвата 4 канала таймера + [5:5] + read-write + + + IC_Int_CH3 + Маска прерывания захвата 3 канала таймера + [4:4] + read-write + + + IC_Int_CH2 + Маска прерывания захвата 2 канала таймера + [3:3] + read-write + + + IC_Int_CH1 + Маска прерывания захвата 1 канала таймера + [2:2] + read-write + + + UDF_Int + Маска прерывания опустошения счетчика + [1:1] + read-write + + + OVF_Int + Маска прерывания по переполнению счетчика + [0:0] + read-write + + + + + INT_CLEAR + Регистр сброса флагов прерываний + 0x18 + 0xFFFFFFFF + 0xFFFFFFFF + + + INT_FLAG + Регистр флагов прерываний + 0x1C + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Статус прерывания совпадения 4 канала таймера + [9:9] + read-only + + + OC_Int_CH3 + Статус прерывания совпадения 3 канала таймера + [8:8] + read-only + + + OC_Int_CH2 + Статус прерывания совпадения 2 канала таймера + [7:7] + read-only + + + OC_Int_CH1 + Статус прерывания совпадения 1 канала таймера + [6:6] + read-only + + + IC_Int_CH4 + Статус прерывания захвата 4 канала таймера + [5:5] + read-only + + + IC_Int_CH3 + Статус прерывания захвата 3 канала таймера + [4:4] + read-only + + + IC_Int_CH2 + Статус прерывания захвата 2 канала таймера + [3:3] + read-only + + + IC_Int_CH1 + Статус прерывания захвата 1 канала таймера + [2:2] + read-only + + + UDF_Int + Статус прерывания опустошения счетчика + [1:1] + read-only + + + OVF_Int + Статус прерывания по переполнению счетчика + [0:0] + read-only + + + + + CH1_CNTRL + Конфигурационный регистр 1 канала + 0x80 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH1_OCR + Значение сравнения 1 канала + 0x84 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH1_ICR + Значение захвата 1 канала + 0x88 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH2_CNTRL + Конфигурационный регистр 2 канала + 0x90 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH2_OCR + Значение сравнения 2 канала + 0x94 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH2_ICR + Значение захвата 2 канала + 0x98 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH3_CNTRL + Конфигурационный регистр 3 канала + 0xA0 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH3_OCR + Значение сравнения 3 канала + 0xA4 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH3_ICR + Значение захвата 3 канала + 0xA8 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH4_CNTRL + Конфигурационный регистр 4 канала + 0xB0 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b0 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH4_OCR + Значение сравнения 4 канала + 0xB4 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH4_ICR + Значение захвата 4 канала + 0xB8 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + + + TIMER32_2 + регистры модуля таймера_2 + 0x00082C00 + + 0x0 + 0xBC + registers + + + + VALUE + 0x00 + + + TIM_VAL + текущее значение счетчика + [31:0] + read-only + + + + + TOP + максимальное значение счетной последовательности + 0x04 + 0xFFFFFFFF + 0xFFFFFFFF + + + TIM_TOP + максимальное значение счетчика (ограничивает счетную последоваельность сверху) + [31:0] + read-write + + + + + PRESCALE + значение делителя + 0x08 + 0x0 + 0xFFFFFFFF + + + TIM_PRESCALE + Значение предварительного делителя. Предделитель вырабатывает тактовый сигнал для счета, частота которого в целое раз меньше входной + [31:0] + read-write + + + + + CONTROL + Конфигурационный регистр основного таймера + 0x0C + 0x0 + + + Reserved + Зарезервировано + [31:4] + + + SOURCE + Выбор источника тактового сигнала для счета + [3:2] + read-write + + + APB_P_CLK + частота тактов шины APB_P + 0b00 + + + TIM1 + Синхронный вход тактирования TIM1 + 0b01 + + + TIMER32_2_Tx + Вход микросхемы timer2_Tx_pin_pad + 0b10 + + + TIM3 + Асинхронный вход тактирования TIM2 + 0b11 + + + + + COUNT_MODE + Режим счёта таймера + [1:0] + read-write + + + Direct + Прямой режим + 0b00 + + + Reverse + Обратный режим + 0b01 + + + Bidirectional + Двунаправленный режим + 0b10 + + + + + + + ENABLE + Регистр включения таймера + 0x10 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:2] + + + TIM_CLR + Сброс (обнуление) текущего значения счетчика при записи «1» + [1:1] + writeOnce + + + TIM_EN + Запуск/остановка работы счетчика + [0:0] + read-write + + + Disable + Счетчик выключен + 0b00 + + + Enable + Счетчик работает + 0b01 + + + + + + + INT_MASK + Регистр маски прерываний + 0x14 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Маска прерывания совпадения 4 канала таймера + [9:9] + read-write + + + OC_Int_CH3 + Маска прерывания совпадения 3 канала таймера + [8:8] + read-write + + + OC_Int_CH2 + Маска прерывания совпадения 2 канала таймера + [7:7] + read-write + + + OC_Int_CH1 + Маска прерывания совпадения 1 канала таймера + [6:6] + read-write + + + IC_Int_CH4 + Маска прерывания захвата 4 канала таймера + [5:5] + read-write + + + IC_Int_CH3 + Маска прерывания захвата 3 канала таймера + [4:4] + read-write + + + IC_Int_CH2 + Маска прерывания захвата 2 канала таймера + [3:3] + read-write + + + IC_Int_CH1 + Маска прерывания захвата 1 канала таймера + [2:2] + read-write + + + UDF_Int + Маска прерывания опустошения счетчика + [1:1] + read-write + + + OVF_Int + Маска прерывания по переполнению счетчика + [0:0] + read-write + + + + + INT_CLEAR + Регистр сброса флагов прерываний + 0x18 + 0xFFFFFFFF + 0xFFFFFFFF + + + INT_FLAG + Регистр флагов прерываний + 0x1C + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + OC_Int_CH4 + Статус прерывания совпадения 4 канала таймера + [9:9] + read-only + + + OC_Int_CH3 + Статус прерывания совпадения 3 канала таймера + [8:8] + read-only + + + OC_Int_CH2 + Статус прерывания совпадения 2 канала таймера + [7:7] + read-only + + + OC_Int_CH1 + Статус прерывания совпадения 1 канала таймера + [6:6] + read-only + + + IC_Int_CH4 + Статус прерывания захвата 4 канала таймера + [5:5] + read-only + + + IC_Int_CH3 + Статус прерывания захвата 3 канала таймера + [4:4] + read-only + + + IC_Int_CH2 + Статус прерывания захвата 2 канала таймера + [3:3] + read-only + + + IC_Int_CH1 + Статус прерывания захвата 1 канала таймера + [2:2] + read-only + + + UDF_Int + Статус прерывания опустошения счетчика + [1:1] + read-only + + + OVF_Int + Статус прерывания по переполнению счетчика + [0:0] + read-only + + + + + CH1_CNTRL + Конфигурационный регистр 1 канала + 0x80 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH1_OCR + Значение сравнения 1 канала + 0x84 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH1_ICR + Значение захвата 1 канала + 0x88 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH2_CNTRL + Конфигурационный регистр 2 канала + 0x90 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH2_OCR + Значение сравнения 2 канала + 0x94 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH2_ICR + Значение захвата 2 канала + 0x98 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH3_CNTRL + Конфигурационный регистр 3 канала + 0xA0 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b00 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH3_OCR + Значение сравнения 3 канала + 0xA4 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH3_ICR + Значение захвата 3 канала + 0xA8 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + CH4_CNTRL + Конфигурационный регистр 4 канала + 0xB0 + 0x0 + 0xFFFFFFFF + + + Reserved + Зарезервировано + [31:10] + + + DIR + Направление передачи данных. Устанавливается автоматически в зависимости от режима работы (1 - выход, 0 - вход) + [9:9] + read-only + + + Output + Выход + 0b01 + + + Input + Вход + 0b0 + + + + + PWM_INV + Тип вывода в режиме ШИМ инвертирование + [8:8] + read-write + + + Direct + Прямой (не инвертированный) выход + 0b0 + + + Inverted + Инвертированный выход + 0b01 + + + + + EN + Включение/выключение канала + [7:7] + read-write + + + MODE + Режим работы канала + [6:5] + read-write + + + Reserved + Зарезервировано + 0b00 + + + Compare + Режим сравнения (для timer0) + 0b01 + + + Capture + Режим захвата(для timer0) + 0b10 + + + PWM + ШИМ + 0b11 + + + + + EDGE + Режим сигнала захвата + [4:4] + read-write + + + Front + фронт + 0b00 + + + Back + срез + 0b01 + + + + + Reserved + Зарезервировано + [3:1] + + + NOISE + Управление фильтрацией входных помех на входе ic_port: +0 – фильтрация выключена; +1 – фильтрация выключена + [0:0] + read-write + + + Enable + Фильтрация выключена + 0b00 + + + Disable + Фильтрация включена + 0b01 + + + + + + + CH4_OCR + Значение сравнения 4 канала + 0xB4 + 0x0 + 0xFFFFFFFF + + + OCR + Значение таймера в режиме сравнения + [31:0] + read-write + + + + + CH4_ICR + Значение захвата 4 канала + 0xB8 + 0x0 + 0xFFFFFFFF + + + ICR + Значение таймера в режиме захвата + [31:0] + read-write + + + + + + + SPI_0 + Модуль обеспечивает взаимодействие с различными периферийными устройствами + 0x00083000 + + 0x00 + 0x30 + registers + + + + CONFIG + Регистр конфигурации SPI + 0x00 + 0x00 + 0xFFFFFFFF + + + Manual_CS + Выбор режима управления сигналом выбора ведомого + [14:14] + read-write + + + Automatic + Автоматический режим + 0b00 + + + Manual + Ручной режим + 0b01 + + + + + CS + Выбор ведомых устройств + [13:10] + read-write + + + Not_selected + Ведомые устройства не выбраны + 0b1111 + + + CS1 + Выбрано устройство 1 + 0bxx01 + + + CS2 + Выбрано устройство 2 + 0bx011 + + + CS3 + Выбрано устройство 3 + 0b0111 + + + CS4 + Выбрано устройство 4 + 0bxxx0 + + + + + REF_CLK + Выбор опорной тактовой частоты + [8:8] + read-write + + + Not_supported + Не поддерживается + 0b00 + + + APB_P_CLK + Используется опорная частота SPI + 0b01 + + + + + BAUD_RATE_DIV + Управляет скоростью передачи данных, задает коэффициент деления частоты spi_ref_clk + [5:3] + read-write + + + DIV2 + Деление на 2 + 0b00 + + + DIV4 + Деление на 4 + 0b001 + + + DIV8 + Деление на 8 + 0b010 + + + DIV16 + Деление на 16 + 0b011 + + + DIV32 + Деление на 32 + 0b100 + + + DIV64 + Деление на 64 + 0b101 + + + DIV128 + Деление на 128 + 0b110 + + + DIV256 + Деление на 256 + 0b111 + + + + + CLK_PH + (CPHA)Выбор фазы тактового сигнала + [2:2] + read-write + + + 0 + Тактовая частота SPI неактивна вне слова + 0b00 + + + 1 + Тактовая частота SPI активна вне слова + 0b01 + + + + + CLK_POL + (CPOL)Выбор полярности тактового сигнала вне слова + [1:1] + read-write + + + 0 + Тактовый сигнал вне слова удерживается на низком уровне + 0b00 + + + 1 + Тактовый сигнал вне слова удерживается на высоком уровне + 0b01 + + + + + MODE_SEL + (MSTREN) Выбор режима + [0:0] + read-write + + + Slave + SPI в режиме ведомого устройства + 0b00 + + + Master + SPI в режиме ведущего устройства + 0b01 + + + + + + + STATUS + Регистр статуса. Примечание: биты регистра [6:0] устанавливаются в «1», если произошло событие вызывающее прерывание. + 0x04 + 0x04 + 0xFFFFFFFF + + + SPI_ACTIVE + Статус сеанса передачи + [15:15] + read-only + + + Ready + Контроллер SPI в состоянии ожидания обмена + 0b00 + + + Busy + Контроллер SPI в процессе обмена + 0b01 + + + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Регистр TX FIFO опустошен. Устанавливается в режиме ведомого в случае, если к началу обмена в TX_FIFO нет данных + [6:6] + read-only + + + Not_empty + Опустошение не детектируется + 0b00 + + + Underflow + Определение опустошения + 0b01 + + + + + RX_FIFO_FULL + (IXR_RXFULL) Регистр RX_FIFO заполнен + [5:5] + read-only + + + Not_full + FIFO не заполнен + 0b00 + + + Full + FIFO заполнен + 0b01 + + + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Регистр RX_FIFO не пустой + [4:4] + read-only + + + Empty + FIFO пустой + 0b00 + + + Not_empty + В FIFO есть хотя бы один байт + 0b01 + + + + + TX_FIFO_FULL + (IXR_TXFULL) Регистр TX_FIFO заполнен + [3:3] + read-only + + + Not_full + FIFO не заполнен + 0b00 + + + Full + FIFO заполнен + 0b01 + + + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Регистр TX_FIFO не заполнен + [2:2] + read-only + + + Less_than_the_threshold + Регистр заполнен до значение THRESHOLD или больше + 0b00 + + + More_than_the_threshold + Регистр заполнен меньше чем THRESHOLD + 0b01 + + + + + MODE_FAIL + (IXR_MODF) Напряжение на выводе n_ss_in не соответствую режиму работы SPI + [1:1] + read-only + + + Ok + Корректная работа + 0b00 + + + Fail + n_ss_in имеет низкий уровень в режиме ведомого устройства + 0b01 + + + + + RX_OVERFLOW + (IXR_RXOVR) Прерывание при переполнении RX_FIFO, значение сбрасывается при чтении + [0:0] + read-only + + + Ok + Нет переполнения + 0b00 + + + Overflow + Переполнение RX_FIFO + 0b01 + + + + + + + INT_ENABLE + Регистр разрешения прерываний + 0x08 + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Запись «1» устанавливает маску прерывания (разрешает прерывание) при опустошении TX_FIFO + [6:6] + write-only + + + PX_FIFO_FULL + (IXR_RXFULL) Запись «1» устанавливает маску прерывания (разрешает прерывание) при заполнении RX_FIFO + [5:5] + write-only + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Запись «1» устанавливает маску прерывания (разрешает прерывание), когда RX_FIFO не пустой + [4:4] + write-only + + + TX_FIFO_FULL + (IXR_TXFULL) Запись «1» устанавливает маску прерывания (разрешает прерывание), когда TX_FIFO заполнен + [3:3] + write-only + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Запись «1» устанавливает маску прерывания (разрешает прерывание) когда TX_FIFO не заполнен + [2:2] + write-only + + + MODE_FAIL + (IXR_MODF) Запись «1» устанавливает маску прерывания (разрешает прерывание) при нарушении режима + [1:1] + write-only + + + RX_OVERFLOW + (IXR_RXOVR) Запись «1» устанавливает маску прерывания (разрешает прерывание) при переполнении при приеме + [0:0] + write-only + + + + + INT_DISABLE + Регистр запрета прерываний + 0x0C + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при опустошении TX_FIFO + [6:6] + write-only + + + PX_FIFO_FULL + (IXR_RXFULL) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при заполнении RX_FIFO + [5:5] + write-only + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Запись «1» сбрасывает маску прерывания (запрещает прерывание), когда RX_FIFO не пустой + [4:4] + write-only + + + TX_FIFO_FULL + (IXR_TXFULL) Запись «1» сбрасывает маску прерывания (запрещает прерывание), когда TX_FIFO заполнен + [3:3] + write-only + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Запись «1» сбрасывает маску прерывания (запрещает прерывание) когда TX_FIFO не заполнен + [2:2] + write-only + + + MODE_FAIL + (IXR_MODF) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при нарушении режима + [1:1] + write-only + + + RX_OVERFLOW + (IXR_RXOVR) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при переполнении при приеме + [0:0] + write-only + + + + + INT_MASK + Регистр текущих масок прерываний + 0x10 + read-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Текущее состояние маски прерывания при опустошении + [6:6] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + PX_FIFO_FULL + (IXR_RXFULL) Текущее состояние маски прерывания при заполнении RX_FIFO + [5:5] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Текущее состояние маски прерывания, когда RX_FIFO не пустой + [4:4] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TX_FIFO_FULL + (IXR_TXFULL) Текущее состояние маски прерывания, когда TX_FIFO заполнен + [3:3] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Текущее состояние маски прерывания, когда TX_FIFO не заполнен + [2:2] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + MODE_FAIL + (IXR_MODF) Текущее состояние маски прерывания при нарушении режима + [1:1] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RX_OVERFLOW + (IXR_RXOVR) Текущее состояние маски прерывания при переполнении при приеме + [0:0] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + + + ENABLE + Регистр включения/выключения SPI + 0x14 + 0x00 + 0xFFFFFFFF + + + CLEAR_RX_FIFO + Запись 1 при SPI_EN = 0 очищает буфер RX_FIFO. + [3:3] + write-only + + + CLEAR_TX_FIFO + Запись 1 при SPI_EN = 0 очищает буфер TX_FIFO. + [2:2] + write-only + + + SPI_EN + (ENABLE) Включение/выключение модуля SPI + [0:0] + read-write + + + Disable + Выключение модуля SPI + 0b00 + + + Enable + Включение модуля SPI + 0b01 + + + + + + + DELAY + Регистр задержек + 0x18 + read-write + 0x00 + 0xFFFFFFFF + + + D_BTWN + (BTWN) Задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между снятием сигнала выбора одного ведомого устройства и установкой сигнала выбора другого ведомого устройства + [23:16] + read-write + + + D_AFTER + (AFTER) Задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между последним битом текущего слова и первым битом следующего слова + [15:8] + read-write + + + D_INT + (INIT) Дополнительная задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между установкой сигнала n_ss_out в «0» и передачей первого бита + [7:0] + read-write + + + + + TXDATA + Регистр передаваемых данных + 0x1C + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_data + Данные для TX_FIFO + [7:0] + write-only + + + + + RXDATA + Регистр принимаемых данных + 0x20 + read-only + 0x00 + 0xFFFFFFFF + + + RX_FIFO_data + Данные из RX_FIFO. + [7:0] + read-only + + + + + SIC + Регистр счетчика останова ведомого устройства + 0x24 + 0xFF + 0xFFFFFFFF + + + Slave_Idle_coun + Модуль SPI в режиме ведомого устройства начинает передачу только когда тактовый сигнал sclk_in (внешнего ведущего устройства) не изменяется в течение количества периодов опорного тактового сигнала SPI заданного в этом поле или когда модуль SPI не активен + [7:0] + read-write + + + + + TX_THR + Регистр пороговых значений TX_FIFO + 0x28 + read-write + 0x01 + 0xFFFFFFFF + + + Threshold_of_TX_FIFO + Задает уровень, при котором TX_FIFO считается не заполненным и формируется прерывание + [31:0] + read-write + + + + + ID + Идентификационный номер модуля + 0x2C + read-only + 0x01090100 + 0xFFFFFFFF + + + ID + Идентификационный номер модуля + [31:0] + read-only + + + + + + + SPI_1 + Модуль обеспечивает взаимодействие с различными периферийными устройствами + 0x00083400 + + 0x00 + 0x30 + registers + + + + CONFIG + Регистр конфигурации SPI + 0x00 + 0x00 + 0xFFFFFFFF + + + Manual_CS + Выбор режима управления сигналом выбора ведомого + [14:14] + read-write + + + Automatic + Автоматический режим + 0b00 + + + Manual + Ручной режим + 0b01 + + + + + CS + Выбор ведомых устройств + [13:10] + read-write + + + Not_selected + Ведомые устройства не выбраны + 0b1111 + + + CS1 + Выбрано устройство 1 + 0bxx01 + + + CS2 + Выбрано устройство 2 + 0bx011 + + + CS3 + Выбрано устройство 3 + 0b0111 + + + CS4 + Выбрано устройство 4 + 0bxxx0 + + + + + REF_CLK + Выбор опорной тактовой частоты + [8:8] + read-write + + + Not_supported + Не поддерживается + 0b00 + + + APB_P_CLK + Используется опорная частота SPI + 0b01 + + + + + BAUD_RATE_DIV + Управляет скоростью передачи данных, задает коэффициент деления частоты spi_ref_clk + [5:3] + read-write + + + DIV2 + Деление на 2 + 0b00 + + + DIV4 + Деление на 4 + 0b001 + + + DIV8 + Деление на 8 + 0b010 + + + DIV16 + Деление на 16 + 0b011 + + + DIV32 + Деление на 32 + 0b100 + + + DIV64 + деление на 64 + 0b101 + + + DIV128 + деление на 128 + 0b110 + + + DIV256 + деление на 256 + 0b111 + + + + + CLK_PH + (CPHA)Выбор фазы тактового сигнала + [2:2] + read-write + + + 0 + Тактовая частота SPI неактивна вне слова + 0b00 + + + 1 + Тактовая частота SPI активна вне слова + 0b01 + + + + + CLK_POL + (CPOL)Выбор полярности тактового сигнала вне слова + [1:1] + read-write + + + 0 + Тактовый сигнал вне слова удерживается на низком уровне + 0b00 + + + 1 + Тактовый сигнал вне слова удерживается на высоком уровне + 0b01 + + + + + MODE_SEL + (MSTREN) Выбор режима + [0:0] + read-write + + + Slave + SPI в режиме ведомого устройства + 0b00 + + + Master + SPI в режиме ведущего устройства + 0b01 + + + + + + + STATUS + Регистр статуса. Примечание: биты регистра [6:0] устанавливаются в «1», если произошло событие вызывающее прерывание. + 0x04 + 0x04 + 0xFFFFFFFF + + + SPI_ACTIVE + Статус сеанса передачи + [15:15] + read-only + + + Ready + Контроллер SPI в состоянии ожидания обмена + 0b00 + + + Busy + Контроллер SPI в процессе обмена + 0b01 + + + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Регистр TX FIFO опустошен. Устанавливается в режиме ведомого в случае, если к началу обмена в TX_FIFO нет данных + [6:6] + read-only + + + Not_empty + Опустошение не детектируется + 0b00 + + + Underflow + Определение опустошения + 0b01 + + + + + RX_FIFO_FULL + (IXR_RXFULL) Регистр RX_FIFO заполнен + [5:5] + read-only + + + Not_full + FIFO не заполнен + 0b00 + + + Full + FIFO заполнен + 0b01 + + + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Регистр RX_FIFO не пустой + [4:4] + read-only + + + Empty + FIFO пустой + 0b00 + + + Not_empty + В FIFO есть хотя бы один байт + 0b01 + + + + + TX_FIFO_FULL + (IXR_TXFULL) Регистр TX_FIFO заполнен + [3:3] + read-only + + + Not_full + FIFO не заполнен + 0b00 + + + Full + FIFO заполнен + 0b01 + + + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Регистр TX_FIFO не заполнен + [2:2] + read-only + + + Less_than_the_threshold + Регистр заполнен до значение THRESHOLD или больше + 0b00 + + + More_than_the_threshold + Регистр заполнен меньше чем THRESHOLD + 0b01 + + + + + MODE_FAIL + (IXR_MODF) Напряжение на выводе n_ss_in не соответствует режиму работы SPI + [1:1] + read-only + + + Ok + Корректная работа + 0b00 + + + Fail + n_ss_in имеет низкий уровень в режиме ведомого устройства + 0b01 + + + + + RX_OVERFLOW + (IXR_RXOVR) Прерывание при переполнении RX_FIFO, значение сбрасывается при чтении + [0:0] + read-only + + + Ok + Нет переполнения + 0b00 + + + Overflow + Переполнение RX_FIFO + 0b01 + + + + + + + INT_ENABLE + Регистр разрешения прерываний + 0x08 + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Запись «1» устанавливает маску прерывания (разрешает прерывание) при опустошении TX_FIFO + [6:6] + write-only + + + PX_FIFO_FULL + (IXR_RXFULL) Запись «1» устанавливает маску прерывания (разрешает прерывание) при заполнении RX_FIFO + [5:5] + write-only + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Запись «1» устанавливает маску прерывания (разрешает прерывание), когда RX_FIFO не пустой + [4:4] + write-only + + + TX_FIFO_FULL + (IXR_TXFULL) Запись «1» устанавливает маску прерывания (разрешает прерывание), когда TX_FIFO заполнен + [3:3] + write-only + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Запись «1» устанавливает маску прерывания (разрешает прерывание) когда TX_FIFO не заполнен + [2:2] + write-only + + + MODE_FAIL + (IXR_MODF) Запись «1» устанавливает маску прерывания (разрешает прерывание) при нарушении режима + [1:1] + write-only + + + RX_OVERFLOW + (IXR_RXOVR) Запись «1» устанавливает маску прерывания (разрешает прерывание) при переполнении при приеме + [0:0] + write-only + + + + + INT_DISABLE + Регистр запрета прерываний + 0x0C + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при опустошении TX_FIFO + [6:6] + write-only + + + PX_FIFO_FULL + (IXR_RXFULL) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при заполнении RX_FIFO + [5:5] + write-only + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Запись «1» сбрасывает маску прерывания (запрещает прерывание), когда RX_FIFO не пустой + [4:4] + write-only + + + TX_FIFO_FULL + (IXR_TXFULL) Запись «1» сбрасывает маску прерывания (запрещает прерывание), когда TX_FIFO заполнен + [3:3] + write-only + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Запись «1» сбрасывает маску прерывания (запрещает прерывание) когда TX_FIFO не заполнен + [2:2] + write-only + + + MODE_FAIL + (IXR_MODF) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при нарушении режима + [1:1] + write-only + + + RX_OVERFLOW + (IXR_RXOVR) Запись «1» сбрасывает маску прерывания (запрещает прерывание) при переполнении при приеме + [0:0] + write-only + + + + + INT_MASK + Регистр текущих масок прерываний + 0x10 + read-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_UNDERFLOW + (IXR_TXUF) Текущее состояние маски прерывания при опустошении + [6:6] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + PX_FIFO_FULL + (IXR_RXFULL) Текущее состояние маски прерывания при заполнении RX_FIFO + [5:5] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RX_FIFO_NOT_EMPTY + (IXR_RXNEMPTY) Текущее состояние маски прерывания, когда RX_FIFO не пустой + [4:4] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TX_FIFO_FULL + (IXR_TXFULL) Текущее состояние маски прерывания, когда TX_FIFO заполнен + [3:3] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TX_FIFO_NOT_FULL + (IXR_TXOW) Текущее состояние маски прерывания, когда TX_FIFO не заполнен + [2:2] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + MODE_FAIL + (IXR_MODF) Текущее состояние маски прерывания при нарушении режима + [1:1] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RX_OVERFLOW + (IXR_RXOVR) Текущее состояние маски прерывания при переполнении при приеме + [0:0] + read-only + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + + + ENABLE + Регистр включения/выключения SPI + 0x14 + 0x00 + 0xFFFFFFFF + + + CLEAR_PX_FIFO + Запись 1 при SPI_EN = 0 очищает буфер RX_FIFO. + [3:3] + write-only + + + CLEAR_TX_FIFO + Запись 1 при SPI_EN = 0 очищает буфер TX_FIFO. + [2:2] + write-only + + + SPI_EN + (ENABLE) Включение/выключение модуля SPI + [0:0] + read-write + + + Disable + Выключение модуля SPI + 0b00 + + + Enable + Включение модуля SPI + 0b01 + + + + + + + DELAY + Регистр задержек + 0x18 + read-write + 0x00 + 0xFFFFFFFF + + + D_BTWN + (BTWN) Задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между снятием сигнала выбора одного ведомого устройства и установкой сигнала выбора другого ведомого устройства + [23:16] + read-write + + + D_AFTER + (AFTER) Задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между последним битом текущего слова и первым битом следующего слова + [15:8] + read-write + + + D_INT + (INIT) Дополнительная задержка в периодах опорного тактового сигнала или внешнего тактового сигнала ext_clk между установкой сигнала n_ss_out в «0» и передачей первого бита + [7:0] + read-write + + + + + TXDATA + Регистр передаваемых данных + 0x1C + write-only + 0x00 + 0xFFFFFFFF + + + TX_FIFO_data + Данные для TX_FIFO + [7:0] + write-only + + + + + RXDATA + Регистр принимаемых данных + 0x20 + read-only + 0x00 + 0xFFFFFFFF + + + RX_FIFO_data + Данные из RX_FIFO. + [7:0] + read-only + + + + + SIC + Регистр счетчика останова ведомого устройства + 0x24 + 0xFF + 0xFFFFFFFF + + + Slave_Idle_coun + Модуль SPI в режиме ведомого устройства начинает передачу только когда тактовый сигнал sclk_in (внешнего ведущего устройства) не изменяется в течение количества периодов опорного тактового сигнала SPI заданного в этом поле или когда модуль SPI не активен + [7:0] + read-write + + + + + TX_THR + Регистр пороговых значений TX_FIFO + 0x28 + read-write + 0x01 + 0xFFFFFFFF + + + Threshold_of_TX_FIFO + Задает уровень, при котором TX_FIFO считается не заполненным и формируется прерывание + [31:0] + read-write + + + + + ID + Идентификационный номер модуля + 0x2C + read-only + 0x01090100 + 0xFFFFFFFF + + + ID + Идентификационный номер модуля + [31:0] + read-only + + + + + + + I2C_0 + Модуль обеспечивает интерфейс для связи контроллера и последовательной шины I2C + 0x00083800 + + 0x00 + 0x28 + registers + + + + CR1 + Регистр управления 1 + 0x00 + read-write + 0x00 + 0xFFFFFFFF + + + GCEN + Разрешение адреса общего вызова + [19:19] + read-write + + + Disabled + Адрес 0b00000000 запрещен, формируется NACK + 0b00 + + + Enable + Адрес 0b00000000 разрешен, формируется ACK + 0b01 + + + + + NOSTRETCH + Отключение растягивания тактового сигнала в режиме «ведомый». Изменение значения допускается только при выключенном блоке (PE=0). В режиме «ведущий» бит должен быть установлен в ‘0’ + [17:17] + read-write + + + Stretching_enabled + Растягивание активно + 0b00 + + + Stretching_disable + Растягивание выключено + 0b01 + + + + + SBC + Режим аппаратного контроля передачи данных в режиме «ведомый» + [16:16] + read-write + + + Disable + Контроль выключен + 0b00 + + + Enable + Контроль включен + 0b01 + + + + + RXDMAEN + Режим поддержки DMA при приеме данных + [15:15] + read-write + + + Disable + Поддержка DMA выключена + 0b00 + + + Enable + Поддержка DMA включенa + 0b01 + + + + + TXDMAEN + Режим поддержки DMA при передаче данных + [14:14] + read-write + + + Disable + Поддержка DMA выключена + 0b00 + + + Enable + Поддержка DMA включена + 0b01 + + + + + ANFOFF + Управление аналоговым фильтром шумов + [12:12] + read-write + + + Disable + Фильтр выключен + 0b00 + + + Enable + Фильтр включен + 0b01 + + + + + DNF + Управление цифровым фильтром шумов. Изменение значения допускается только при выключенном блоке (PE=0) + [11:8] + read-write + + + Disable + Цифровой фильтр выключен + 0b0000 + + + 1 + Цифровой фильтр установлен на 1 такт I2CCLK + 0b0001 + + + 2 + Цифровой фильтр установлен на 2 такта I2CCLK + 0b0010 + + + 3 + Цифровой фильтр установлен на 3 такта I2CCLK + 0b0011 + + + 4 + Цифровой фильтр установлен на 4 такта I2CCLK + 0b0100 + + + 5 + Цифровой фильтр установлен на 5 тактов I2CCLK + 0b0101 + + + 6 + Цифровой фильтр установлен на 6 тактов I2CCLK + 0b0110 + + + 7 + Цифровой фильтр установлен на 7 тактов I2CCLK + 0b0111 + + + 8 + Цифровой фильтр установлен на 8 тактов I2CCLK + 0b1000 + + + 9 + Цифровой фильтр установлен на 9 тактов I2CCLK + 0b1001 + + + 10 + Цифровой фильтр установлен на 10 тактов I2CCLK + 0b1010 + + + 11 + Цифровой фильтр установлен на 11 тактов I2CCLK + 0b1011 + + + 12 + Цифровой фильтр установлен на 12 тактов I2CCLK + 0b1100 + + + 13 + Цифровой фильтр установлен на 13 тактов I2CCLK + 0b1101 + + + 14 + цифровой фильтр установлен на 14 тактов I2CCLK + 0b1110 + + + 15 + Цифровой фильтр установлен на 15 тактов I2CCLK + 0b1111 + + + + + ERRIE + Разрешение прерывания при ошибке. События, вызывающие прерывание: +- потеря арбитража (ARLO); +- ошибка шины (BERR); +- переполнение/недозагрузка (OVR). + [7:7] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TCIE + Разрешение прерывания окончания передачи. События, вызывающие прерывание: +- окончание передачи (TC); +- окончание передачи при RELOAD=1 (TCR). + [6:6] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + STOPIE + Разрешение прерывания обнаружения STOP на линии + [5:5] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + NACKIE + Разрешение прерывания прием NACK + [4:4] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ADDRIE + Разрешение прерывания соответствия адреса в режиме «ведомый» + [3:3] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RXIE + Разрешение прерывания при приеме + [2:2] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TXIE + Разрешение прерывания при передаче + [1:1] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + PE + Управление интерфейсом. После очистки, бит должен оставаться в ‘0’ минимум три периода тактового сигнала APB + [0:0] + read-write + + + Disable + Интерфейс выключен + 0b00 + + + Enable + Интерфейс включен + 0b01 + + + + + + + CR2 + Регистр управления 2 + 0x04 + read-write + 0x00 + 0xFFFFFFFF + + + AUTOEND + Управление режимом автоматического окончания в режиме «ведущий». Бит устанавливается и очищается программой. +Не имеет значения при установленном бите RELOAD и в режиме «ведомый» + [25:25] + read-write + + + Disable + Режим автоматического окончания отключен + 0b00 + + + Enable + Режим автоматического окончания включен + 0b01 + + + + + RELOAD + Управление режимом перезаписи NBYTES. Бит устанавливается и очищается программой. + [24:24] + read-write + + + Disable + Транзакция завершена после пересылки NBYTES байт данных (на шине ожидаются STOP или RESTART) + 0b00 + + + Enable + Транзакция не завершена после пересылки NBYTES байт данных (значение NBYTES будет перезаписано) + 0b01 + + + + + NBYTES + Количество байт для приема / передачи +Не имеет значения в режиме «ведомый» при SBC=0 +Не допускается изменение при установленном бите START + [23:16] + read-write + + + NACK + Формирование NACK в режиме «ведомый». Устанавливается программно, сбрасывается аппаратно: +• после отправки NACK; +• по событию STOP на шине; +• при получении своего адреса ведомого; +• PE=0. + [15:15] + read-write + + + ASK + Отправка ACK после приёма текущего байта + 0b00 + + + NACK + Отправка NACK после приёма текущего байта + 0b01 + + + + + STOP + Формирование STOP в режиме «ведущий». Устанавливается программно, сбрасывается аппаратно по событию STOP на шине или при PE=0. +Запись ‘0’ в этот бит не имеет эффекта. + [14:14] + read-write + + + 0 + STOP не формируется + 0b00 + + + STOP + Формирование STOP после передачи текущего байта + 0b01 + + + + + START + Формирование START. Устанавливается программно, сбрасывается аппаратно после отправки адреса, потере арбитража или PE=0. +Запись ‘0’ в этот бит не имеет эффекта. +В режиме «ведущий» отправка первой части 10-битного адреса повторяется при получении NACK до получения ACK или до очистки бита START записью в бит ADDRCF + [13:13] + read-write + + + 0 + START не формируется + 0b00 + + + Start + формирование START после передачи текущего байта + 0b01 + + + + + HEAD10R + Поддержка 10-битного адреса в режиме «ведущий», чтение +Изменение этого бита при START=1 не допускается + [12:12] + read-write + + + Complete + Ведущий отправляет полную последовательность для чтения для 10 битного адреса: Start + 2 байта ад-реса (запись) + ReStart + заголовок 10-битного адреса (чтение) + 0b00 + + + Header + Ведущий отправляет только заголовок 10-битного адреса (чтение) + 0b01 + + + + + ADD10 + Режим 10-битного адреса (режим «ведущий»). Изменение этого бита при START=1 не допускается. + [11:11] + read-write + + + 7bit + Ведущий работает в режиме 7-битного адреса + 0b00 + + + 10bit + Ведущий работает в режиме 10-битного адреса + 0b01 + + + + + RD_WRN + Направление передачи (режим «ведущий»). +Изменение этого бита при START=1 не допускается. + [10:10] + read-write + + + Write + Ведущий запрашивает транзакцию записи + 0b00 + + + Read + Ведущий запрашивает транзакцию чтения + 0b01 + + + + + SADD_10bit + Адрес ведомого (режим «ведущий») в режиме 10-битного адреса (ADD10 = 1). +Изменение этих битов при START=1 не допускается. + [9:0] + read-write + + + SADD_7bit + Адрес ведомого (режим «ведущий») в режиме 7-битного адреса (ADD10 = 0). +Изменение этих битов при START=1 не допускается. + [7:1] + read-write + + + + + OAR1 + Регистр адреса 1 + 0x08 + read-write + 0x00 + 0xFFFFFFFF + + + OA1EN + Использование собственно-го адреса OA1 + [15:15] + read-write + + + NACK + При получении адреса OA1 формируется NACK + 0b00 + + + ACK + При получении адреса OA1 формируется ACK + 0b01 + + + + + OA1MODE + Режим 10-битного адреса OA1. Изменение бита допускается при OA1EN=0 + [10:10] + read-write + + + 7bit + OA1 – 7-битный адрес + 0b00 + + + 10bit + OA1 – 10-битный адрес + 0b01 + + + + + OA1_10bit + Собственный адрес 1 (10-битный режим). +Изменение бита допускается при OA1EN=0. + [9:0] + read-write + + + OA1_7bit + Собственный адрес 1 (7-битный режим). +Изменение бита допускается при OA1EN=0. + [7:1] + read-write + + + + + OAR2 + Регистр адреса 2 + 0x0C + read-write + 0x00 + 0xFFFFFFFF + + + OA2EN + Использование собственного адреса OA2 + [15:15] + read-write + + + NACK + При получении адреса OA2 формируется NACK + 0b00 + + + ACK + При получении адреса OA2 формируется ACK + 0b01 + + + + + OA2MSK + Маска адреса OA2. +Если OA2MSK ≠ 0, зарезервированные адреса I2C (0b0000xxx, 0b1111xxx) не подтверждаются, даже если адреса совпадают. +Изменение битов допускается при OA2EN=0 + [10:8] + read-write + + + No_mask + Нет маски + 0b000 + + + 1_1_masked + Сравниваются только OA2[7:2] + 0b001 + + + 2_1_masked + Сравниваются только OA2[7:3] + 0b010 + + + 3_1_masked + Сравниваются только OA2[7:4] + 0b011 + + + 4_1_masked + Сравниваются только OA2[7:5] + 0b100 + + + 5_1_masked + Сравниваются только OA2[7:6] + 0b101 + + + 6_1_masked + Сравниваются только OA2[7] + 0b110 + + + 7_1_masked + OA2[7:1] маскируются, подтверждаются (ACK) все 7-битные адреса (кроме зарезервированных) + 0b111 + + + + + OA2 + Собственный 7-битный адрес 2 +Изменение битов допускается при OA2EN=0 + [7:1] + read-write + + + + + TIMINGR + Регистр настройки временных ограничений. +Регистр должен конфигурироваться, пока интерфейс заблокирован (PE=0). + 0x10 + read-write + 0x00 + 0xFFFFFFFF + + + PRESC + Предварительный делитель частоты I2CCLK. Используется для вычисления значения t_PRESC используемого счетчиками предустановки, удержания, низкого и высокого уровней. +t_PRESC = (PRESC+1) x t_I2CCLK. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [31:28] + read-write + + + SCLDEL + Длительность предустановки данных t_SU:DAT. +Задержка между изменением SDA и фронтом SCL. +t_SCLDEL = (SCLDEL+1) x t_PRESC +Используется для генерации задержек t_SU:DAT. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [23:20] + read-write + + + SDADEL + Длительность предустановки данных t_HD:DAT. +Задержка между спадом SCL и изменением SDA в режиме ведущего и ведомого при NOSTRETCH = 0 +t_SCADEL = (SCADEL+1) x t_PRESC +Используется для генерации задержек t_HD:DAT. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [19:16] + read-write + + + SCLH + Длительность удержания SCL в состоянии логической «1» в режиме «ведущий» +t_SCLH = (SCLH+1) x t_PRESC +Также используется для генерации задержек t_HD:STA и t_SU:STO. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [15:8] + read-write + + + SCLL + Длительность удержания SCL в состоянии логического «0» в режиме «ведущий» +t_SCLL = (SCLL+1) x t_PRESC +Также используется для генерации задержек t_BUF и t_SU:STA. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [7:0] + read-write + + + + + ISR + Регистр флагов прерываний + 0x18 + read-write + 0x00 + 0xFFFFFFFF + + + ADDCODE + Код совпавшего адреса. Обновляется в режиме «ведомый» при совпадении адреса (ADDR=1). +В режиме 10-битного адреса содержит заголовок (5b11110) и два старших бита адреса. + [23:17] + read-only + + + DIR + Направление передачи (режим «ведомый»). Обновляется при совпадении адреса (ADDR=1) + [16:16] + read-only + + + Write + Тип передачи «запись», ведомый переходит в режим приемника + 0b00 + + + Read + Тип передачи «чтение», ведомый переходит в режим передатчика + 0b01 + + + + + BUSY + Флаг индикации занятой шины. Устанавливается после события START на шине и сбрасывается после события STOP на шине + [15:15] + read-only + + + OVR + Флаг переполнения/недозагрузки (режим «ведомый» при NOSTRETCH=1) +Устанавливается аппаратно, сбрасывается программной установкой бита OVRCF или аппаратно при PE=0. + [10:10] + read-only + + + ARLO + Флаг проигрыша арбитража. +Устанавливается аппаратно, сбрасывается программной установкой бита ARLOCF или аппаратно при PE=0. + [9:9] + read-only + + + BERR + Флаг ошибки шины +Устанавливается аппаратно при детектировании неуместного события START или STOP на шине, если интерфейс участвует в передаче. Не устанавливается в фазе адреса в режиме «ведомый». Сбрасывается программной установкой бита BERRCF или аппаратно при PE=0. + [8:8] + read-only + + + TCR + Флаг окончания передачи (режим «ведущий» или «ведомый» с установленным битом SBC). Устанавливается аппаратно при RELOAD=1, после передачи NBYTES байт. +Сбрасывается записью в NBYTES ненулевого значения или аппаратно при PE=0. + [7:7] + read-only + + + TC + Флаг окончания передачи (режим «ведущий»). Устанавливается аппаратно при RELOAD=0, AUTOEND=0, после передачи NBYTES байт. +Сбрасывается программной установкой бита START или STOP или аппаратно при PE=0. + [6:6] + read-only + + + STOPF + Флаг детектирования STOP на шине. +Устанавливается аппаратно, если интерфейс участвует в передаче. +Сбрасывается программной установкой бита STOPCF или аппаратно при PE=0. + + [5:5] + read-only + + + NACKF + Флаг «не получено подтверждение» (NACK). +Устанавливается аппаратно, после передачи байта. +Сбрасывается программной установкой бита NACKCF или аппаратно при PE=0. + + [4:4] + read-only + + + ADDR + Флаг соответствия адреса (режим «ведомый»). +Устанавливается аппаратно, если полученный адрес совпадает с одним из разрешенных в OAR1, OAR2. +Сбрасывается программной установкой бита ADDRCF или аппаратно при PE=0. + [3:3] + read-only + + + RXNE + Флаг «буфер принятых данных заполнен» (режимы приёма). +Устанавливается аппаратно, после записи принятых данных в регистр RXDR. +Сбрасывается при чтении RXDR или аппаратно при PE=0. + + [2:2] + read-write + + + TXIS + Состояние прерывания передатчика. Устанавливается аппаратно, когда регистр TXDR пуст и следующий байт данных должен быть в него записан. +Сбрасывается записью следующего байта данных в регистр TXDR или аппаратно при PE=0. +Этот бит может быть установлен программой только при NOSTRETCH=1 для выработки события TXIS (в результате: прерывание, при TXIE=1 или DMA запрос, при TXDMAEN=1) + + [1:1] + read-only + + + TXE + Флаг «буфер передаваемых данных» TXDR пуст (режимы отправки). +Устанавливается аппаратно, если буфер пуст; при PE=0 или программно, чтобы сбросить содержимое регистра TXDR. +Сбрасывается записью следующего байта данных в регистр TXDR. + + [0:0] + read-only + + + + + ICR + Регистр сроса флагов прерываний + 0x1C + write-only + 0x00 + 0xFFFFFFFF + + + OVRCF + Сброс флага прерывания переполнения/недозагрузки + [10:10] + write-only + + + ARLOCF + Сброс флага проигрыша арбитража + [9:9] + write-only + + + BERRCF + Сброс флага ошибки шины + [8:8] + write-only + + + STOPCF + Сброс флага детектирования STOP на шине + [5:5] + write-only + + + NACKCF + Сброс флага «не получено подтверждение» (NACK) + [4:4] + write-only + + + ADDRCF + Сброс флага соответствия адреса + [3:3] + write-only + + + + + RXDR + Регистр принятых данных + 0x20 + read-only + 0x00 + 0xFFFFFFFF + + + RXDATA + Буфер принятых данных + [7:0] + read-only + + + + + TXDR + Регистр передаваемых данных + 0x24 + read-write + 0x00 + 0xFFFFFFFF + + + TXDATA + Буфер передаваемых данных + [7:0] + read-write + + + + + + + I2C_1 + Модуль обеспечивает интерфейс для связи контроллера и последовательной шины I2C + 0x00083C00 + + 0x00 + 0x28 + registers + + + + CR1 + Регистр управления 1 + 0x00 + read-write + 0x00 + 0xFFFFFFFF + + + GCEN + Разрешение адреса общего вызова + [19:19] + read-write + + + Disabled + Адрес 0b00000000 запрещен, формируется NACK + 0b00 + + + Enable + Адрес 0b00000000 разрешен, формируется ACK + 0b01 + + + + + NOSTRETCH + Отключение растягивания тактового сигнала в режиме «ведомый». Изменение значения допускается только при выключенном блоке (PE=0). В режиме «ведущий» бит должен быть установлен в ‘0’ + [17:17] + read-write + + + Stretching_enabled + Растягивание активно + 0b00 + + + Stretching_disable + Растягивание выключено + 0b01 + + + + + SBC + Режим аппаратного контроля передачи данных в режиме «ведомый» + [16:16] + read-write + + + Disable + Контроль выключен + 0b00 + + + Enable + Контроль включен + 0b01 + + + + + RXDMAEN + Режим поддержки DMA при приеме данных + [15:15] + read-write + + + Disable + Поддержка DMA выключена + 0b00 + + + Enable + Поддержка DMA включенa + 0b01 + + + + + TXDMAEN + Режим поддержки DMA при передаче данных + [14:14] + read-write + + + Disable + Поддержка DMA выключена + 0b00 + + + Enable + Поддержка DMA включена + 0b01 + + + + + ANFOFF + Управление аналоговым фильтром шумов + [12:12] + read-write + + + Disable + Фильтр выключен + 0b00 + + + Enable + Фильтр включен + 0b01 + + + + + DNF + Управление цифровым фильтром шумов. Изменение значения допускается только при выключенном блоке (PE=0) + [11:8] + read-write + + + Disable + Цифровой фильтр выключен + 0b0000 + + + 1 + Цифровой фильтр установлен на 1 такт I2CCLK + 0b0001 + + + 2 + Цифровой фильтр установлен на 2 такта I2CCLK + 0b0010 + + + 3 + Цифровой фильтр установлен на 3 такта I2CCLK + 0b0011 + + + 4 + Цифровой фильтр установлен на 4 такта I2CCLK + 0b0100 + + + 5 + Цифровой фильтр установлен на 5 тактов I2CCLK + 0b0101 + + + 6 + Цифровой фильтр установлен на 6 тактов I2CCLK + 0b0110 + + + 7 + Цифровой фильтр установлен на 7 тактов I2CCLK + 0b0111 + + + 8 + Цифровой фильтр установлен на 8 тактов I2CCLK + 0b1000 + + + 9 + Цифровой фильтр установлен на 9 тактов I2CCLK + 0b1001 + + + 10 + Цифровой фильтр установлен на 10 тактов I2CCLK + 0b1010 + + + 11 + Цифровой фильтр установлен на 11 тактов I2CCLK + 0b1011 + + + 12 + Цифровой фильтр установлен на 12 тактов I2CCLK + 0b1100 + + + 13 + Цифровой фильтр установлен на 13 тактов I2CCLK + 0b1101 + + + 14 + цифровой фильтр установлен на 14 тактов I2CCLK + 0b1110 + + + 15 + Цифровой фильтр установлен на 15 тактов I2CCLK + 0b1111 + + + + + ERRIE + Разрешение прерывания при ошибке. События, вызывающие прерывание: +- потеря арбитража (ARLO); +- ошибка шины (BERR); +- переполнение/недозагрузка (OVR). + [7:7] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TCIE + Разрешение прерывания окончания передачи. События, вызывающие прерывание: +- окончание передачи (TC); +- окончание передачи при RELOAD=1 (TCR). + [6:6] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + STOPIE + Разрешение прерывания обнаружения STOP на линии + [5:5] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + NACKIE + Разрешение прерывания прием NACK + [4:4] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + ADDRIE + Разрешение прерывания соответствия адреса в режиме «ведомый» + [3:3] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + RXIE + Разрешение прерывания при приеме + [2:2] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + TXIE + Разрешение прерывания при передаче + [1:1] + read-write + + + Disable + Прерывание запрещено + 0b00 + + + Enable + Прерывание разрешено + 0b01 + + + + + PE + Управление интерфейсом. После очистки, бит должен оставаться в ‘0’ минимум три периода тактового сигнала APB + [0:0] + read-write + + + Disable + Интерфейс выключен + 0b00 + + + Enable + Интерфейс включен + 0b01 + + + + + + + CR2 + Регистр управления 2 + 0x04 + read-write + 0x00 + 0xFFFFFFFF + + + AUTOEND + Управление режимом автоматического окончания в режиме «ведущий». Бит устанавливается и очищается программой. +Не имеет значения при установленном бите RELOAD и в режиме «ведомый» + [25:25] + read-write + + + Disable + Режим автоматического окончания отключен + 0b00 + + + Enable + Режим автоматического окончания включен + 0b01 + + + + + RELOAD + Управление режимом перезаписи NBYTES. Бит устанавливается и очищается программой. + [24:24] + read-write + + + Disable + Транзакция завершена после пересылки NBYTES байт данных (на шине ожидаются STOP или RESTART) + 0b00 + + + Enable + Транзакция не завершена после пересылки NBYTES байт данных (значение NBYTES будет перезаписано) + 0b01 + + + + + NBYTES + Количество байт для приема / передачи +Не имеет значения в режиме «ведомый» при SBC=0 +Не допускается изменение при установленном бите START + [23:16] + read-write + + + NACK + Формирование NACK в режиме «ведомый». Устанавливается программно, сбрасывается аппаратно: +• после отправки NACK; +• по событию STOP на шине; +• при получении своего адреса ведомого; +• PE=0. + [15:15] + read-write + + + ASK + Отправка ACK после приёма текущего байта + 0b00 + + + NACK + Отправка NACK после приёма текущего байта + 0b01 + + + + + STOP + Формирование STOP в режиме «ведущий». Устанавливается программно, сбрасывается аппаратно по событию STOP на шине или при PE=0. +Запись ‘0’ в этот бит не имеет эффекта. + [14:14] + read-write + + + 0 + STOP не формируется + 0b00 + + + STOP + Формирование STOP после передачи текущего байта + 0b01 + + + + + START + Формирование START. Устанавливается программно, сбрасывается аппаратно после отправки адреса, потере арбитража или PE=0. +Запись ‘0’ в этот бит не имеет эффекта. +В режиме «ведущий» отправка первой части 10-битного адреса повторяется при получении NACK до получения ACK или до очистки бита START записью в бит ADDRCF + [13:13] + read-write + + + 0 + START не формируется + 0b00 + + + Start + формирование START после передачи текущего байта + 0b01 + + + + + HEAD10R + Поддержка 10-битного адреса в режиме «ведущий», чтение +Изменение этого бита при START=1 не допускается + [12:12] + read-write + + + Complete + Ведущий отправляет полную последовательность для чтения для 10 битного адреса: Start + 2 байта ад-реса (запись) + ReStart + заголовок 10-битного адреса (чтение) + 0b00 + + + Header + Ведущий отправляет только заголовок 10-битного адреса (чтение) + 0b01 + + + + + ADD10 + Режим 10-битного адреса (режим «ведущий»). Изменение этого бита при START=1 не допускается. + [11:11] + read-write + + + 7bit + Ведущий работает в режиме 7-битного адреса + 0b00 + + + 10bit + Ведущий работает в режиме 10-битного адреса + 0b01 + + + + + RD_WRN + Направление передачи (режим «ведущий»). +Изменение этого бита при START=1 не допускается. + [10:10] + read-write + + + Write + Ведущий запрашивает транзакцию записи + 0b00 + + + Read + Ведущий запрашивает транзакцию чтения + 0b01 + + + + + SADD_10bit + Адрес ведомого (режим «ведущий») в режиме 10-битного адреса (ADD10 = 1). +Изменение этих битов при START=1 не допускается. + [9:0] + read-write + + + SADD_7bit + Адрес ведомого (режим «ведущий») в режиме 7-битного адреса (ADD10 = 0). +Изменение этих битов при START=1 не допускается. + [7:1] + read-write + + + + + OAR1 + Регистр адреса 1 + 0x08 + read-write + 0x00 + 0xFFFFFFFF + + + OA1EN + Использование собственного адреса OA1 + [15:15] + read-write + + + NACK + При получении адреса OA1 формируется NACK + 0b00 + + + ACK + При получении адреса OA1 формируется ACK + 0b01 + + + + + OA1MODE + Режим 10-битного адреса OA1. Изменение бита допускается при OA1EN=0 + [10:10] + read-write + + + 7bit + OA1 – 7-битный адрес + 0b00 + + + 10bit + OA1 – 10-битный адрес + 0b01 + + + + + OA1_10bit + Собственный адрес 1 (10-битный режим). +Изменение бита допускается при OA1EN=0. + [9:0] + read-write + + + OA1_7bit + Собственный адрес 1 (7-битный режим). +Изменение бита допускается при OA1EN=0. + [7:1] + read-write + + + + + OAR2 + Регистр адреса 2 + 0x0C + read-write + 0x00 + 0xFFFFFFFF + + + OA2EN + Использование собственного адреса OA2 + [15:15] + read-write + + + NACK + При получении адреса OA2 формируется NACK + 0b00 + + + ACK + При получении адреса OA2 формируется ACK + 0b01 + + + + + OA2MSK + Маска адреса OA2. +Если OA2MSK ≠ 0, зарезервированные адреса I2C (0b0000xxx, 0b1111xxx) не подтверждаются, даже если адреса совпадают. +Изменение битов допускается при OA2EN=0 + [10:8] + read-write + + + No_mask + Нет маски + 0b000 + + + 1_1_masked + Сравниваются только OA2[7:2] + 0b001 + + + 2_1_masked + Сравниваются только OA2[7:3] + 0b010 + + + 3_1_masked + Сравниваются только OA2[7:4] + 0b011 + + + 4_1_masked + Сравниваются только OA2[7:5] + 0b100 + + + 5_1_masked + Сравниваются только OA2[7:6] + 0b101 + + + 6_1_masked + Сравниваются только OA2[7] + 0b110 + + + 7_1_masked + OA2[7:1] маскируются, подтверждаются (ACK) все 7-битные ад-реса (кроме зарезервированных) + 0b111 + + + + + OA2 + Собственный 7-битный адрес 2 +Изменение битов допускается при OA2EN=0 + [7:1] + read-write + + + + + TIMINGR + Регистр настройки временных ограничений. +Регистр должен конфигурироваться, пока интерфейс заблокирован (PE=0). + 0x10 + read-write + 0x00 + 0xFFFFFFFF + + + PRESC + Предварительный делитель частоты I2CCLK. Используется для вычисления значения t_PRESC используемого счетчиками предустановки, удержания, низкого и высокого уровней. +t_PRESC = (PRESC+1) x t_I2CCLK. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [31:28] + read-write + + + SCLDEL + Длительность предустановки данных t_SU:DAT. +Задержка между изменением SDA и фронтом SCL. +t_SCLDEL = (SCLDEL+1) x t_PRESC +Используется для генерации задержек t_SU:DAT. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [23:20] + read-write + + + SDADEL + Длительность предустановки данных t_HD:DAT. +Задержка между спадом SCL и изменением SDA в режиме ведущего и ведомого при NOSTRETCH = 0 +t_SCADEL = (SCADEL+1) x t_PRESC +Используется для генерации задержек t_HD:DAT. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [19:16] + read-write + + + SCLH + Длительность удержания SCL в состоянии логической «1» в режиме «ведущий» +t_SCLH = (SCLH+1) x t_PRESC +Также используется для генерации задержек t_HD:STA и t_SU:STO. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [15:8] + read-write + + + SCLL + Длительность удержания SCL в состоянии логического «0» в режиме «ведущий» +t_SCLL = (SCLL+1) x t_PRESC +Также используется для генерации задержек t_BUF и t_SU:STA. + +Примечание: Регистр TIMING должен конфигурироваться, пока интерфейс заблокирован (PE=0). + [7:0] + read-write + + + + + ISR + Регистр флагов прерываний + 0x18 + read-write + 0x00 + 0xFFFFFFFF + + + ADDCODE + Код совпавшего адреса. Обновляется в режиме «ведомый» при совпадении адреса (ADDR=1). +В режиме 10-битного адреса содержит заголовок (5b11110) и два старших бита адреса. + [23:17] + read-only + + + DIR + Направление передачи (режим «ведомый»). Обновляется при совпадении адреса (ADDR=1) + [16:16] + read-only + + + Write + Тип передачи «запись», ведомый переходит в режим приемника + 0b00 + + + Read + Тип передачи «чтение», ведомый переходит в режим передатчика + 0b01 + + + + + BUSY + Флаг индикации занятой шины. Устанавливается после события START на шине и сбрасывается после события STOP на шине + [15:15] + read-only + + + OVR + Флаг переполнения/недозагрузки (режим «ведомый» при NOSTRETCH=1) +Устанавливается аппаратно, сбрасывается программной установкой бита OVRCF или аппаратно при PE=0. + [10:10] + read-only + + + ARLO + Флаг проигрыша арбитража. +Устанавливается аппаратно, сбрасывается программной установкой бита ARLOCF или аппаратно при PE=0. + [9:9] + read-only + + + BERR + Флаг ошибки шины +Устанавливается аппаратно при детектировании неуместного события START или STOP на шине, если интерфейс участвует в пе-редаче. Не устанавливается в фазе адреса в режиме «ведомый». Сбрасывается программной установкой бита BERRCF или аппаратно при PE=0. + [8:8] + read-only + + + TCR + Флаг окончания передачи (режим «ведущий» или «ведомый» с установленным битом SBC). Устанавливается аппаратно при RELOAD=1, после передачи NBYTES байт. +Сбрасывается записью в NBYTES ненулевого значения или аппаратно при PE=0. + [7:7] + read-only + + + TC + Флаг окончания передачи (режим «ведущий»). Устанавливается аппаратно при RELOAD=0, AUTOEND=0, после передачи NBYTES байт. +Сбрасывается программной установкой бита START или STOP или аппаратно при PE=0. + [6:6] + read-only + + + STOPF + Флаг детектирования STOP на шине. +Устанавливается аппаратно, если интерфейс участвует в передаче. +Сбрасывается программной установкой бита STOPCF или аппаратно при PE=0. + + [5:5] + read-only + + + NACKF + Флаг «не получено подтверждение» (NACK). +Устанавливается аппаратно, после передачи байта. +Сбрасывается программной установкой бита NACKCF или аппаратно при PE=0. + + [4:4] + read-only + + + ADDR + Флаг соответствия адреса (режим «ведомый»). +Устанавливается аппаратно, если полученный адрес совпадает с одним из разрешенных в OAR1, OAR2. +Сбрасывается программной установкой бита ADDRCF или аппаратно при PE=0. + [3:3] + read-only + + + RXNE + Флаг «буфер принятых данных заполнен» (режимы приёма). +Устанавливается аппаратно, после записи принятых данных в регистр RXDR. +Сбрасывается при чтении +RXDR или аппаратно при PE=0. + + [2:2] + read-write + + + TXIS + Состояние прерывания передатчика. Устанавливается аппаратно, когда регистр TXDR пуст и следующий байт данных должен быть в него записан. +Сбрасывается записью следующего байта данных в регистр TXDR или аппаратно при PE=0. +Этот бит может быть установлен программой только при NOSTRETCH=1 для выработки события TXIS (в результате: прерывание, при TXIE=1 или DMA запрос, при TXDMAEN=1) + + [1:1] + read-only + + + TXE + Флаг «буфер передаваемых данных» TXDR пуст (режимы отправки). +Устанавливается аппаратно, если буфер пуст; при PE=0 или программно, чтобы сбросить содержимое регистра TXDR. +Сбрасывается записью следующего байта данных в регистр TXDR. + + [0:0] + read-only + + + + + ICR + Регистр сроса флагов прерываний + 0x1C + write-only + 0x00 + 0xFFFFFFFF + + + OVRCF + Сброс флага прерывания переполнения/недозагрузки + [10:10] + write-only + + + ARLOCF + Сброс флага проигрыша арбитража + [9:9] + write-only + + + BERRCF + Сброс флага ошибки шины + [8:8] + write-only + + + STOPCF + Сброс флага детектирования STOP на шине + [5:5] + write-only + + + NACKCF + Сброс флага «не получено подтверждение» (NACK) + [4:4] + write-only + + + ADDRCF + Сброс флага соответствия адреса + [3:3] + write-only + + + + + RXDR + Регистр принятых данных + 0x20 + read-only + 0x00 + 0xFFFFFFFF + + + RXDATA + Буфер принятых данных + [7:0] + read-only + + + + + TXDR + Регистр передаваемых данных + 0x24 + read-write + 0x00 + 0xFFFFFFFF + + + TXDATA + Буфер передаваемых данных + [7:0] + read-write + + + + + + + GPIO16_0 + Модуль ввода/вывода + 0x00084000 + + 0x0 + 0x18 + registers + + + + SET/STATE + Текущее состояние выводов (STATE) / Установка в «1» (SET) +При чтении – текущее состояние выводов. +При записи «1» соответствующий биту вывод устанавливается в «1» + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + CLEAR + Текущее состояние прерываний / Установка «0» +При чтении – текущее состояние запросов прерываний. +При записи бита «1» соответствующий биту вывод устанавливается в «0» + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + DIRECTION_OUT + Установка направления выводов как выход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «выход» + + 0x08 + read-write + 0xFFFF + 0xFFFFFFFF + + + DIRECTION_IN + Установка направления выводов как вход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «вход» + 0x0C + read-write + 0xFFFF + 0xFFFFFFFF + + + OUTPUT + Выходной регистр +Чтение возвращает содержимое выходного регистра независимо от текущего направления выводов +Запись устанавливает значения всех битов выходного регистра + 0x10 + read-write + 0x0 + 0xFFFFFFFF + + + CONTROL + Тестовый режим +Запись «1» в [0:0] разряд – включение тестового режима (выходы замкнуты на входы внутри модуля) +Запись «0» в [0:0] разряд – нормальный режим + 0x14 + read-write + 0x0 + 0xFFFFFFFF + + + + + GPIO16_1 + Модуль ввода/вывода + 0x00084400 + + 0x0 + 0x18 + registers + + + + SET/STATE + Текущее состояние выводов (STATE) / Установка в «1» (SET) +При чтении – текущее состояние выводов. +При записи «1» соответствующий биту вывод устанавливается в «1» + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + CLEAR + Текущее состояние прерываний / Установка «0» +При чтении – текущее состояние запросов прерываний. +При записи бита «1» соответствующий биту вывод устанавливается в «0» + 0x04 + write-only + 0x0 + 0xFFFFFFFF + + + DIRECTION_OUT + Установка направления выводов как выход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «выход» + + 0x08 + read-write + 0xFFFF + 0xFFFFFFFF + + + DIRECTION_IN + Установка направления выводов как вход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «вход» + 0x0C + read-write + 0xFFFF + 0xFFFFFFFF + + + OUTPUT + Выходной регистр +Чтение возвращает содержимое выходного регистра независимо от текущего направления выводов +Запись устанавливает значения всех битов выходного регистра + 0x10 + read-write + 0x0 + 0xFFFFFFFF + + + CONTROL + Тестовый режим +Запись «1» в [0:0] разряд – включение тестового режима (выходы замкнуты на входы внутри модуля) +Запись «0» в [0:0] разряд – нормальный режим + 0x14 + read-write + 0x0 + 0xFFFFFFFF + + + + + GPIO8_2 + Модуль ввода/вывода + 0x00084800 + + 0x0 + 0x18 + registers + + + + SET/STATE + Текущее состояние выводов (STATE) / Установка в «1» (SET) +При чтении – текущее состояние выводов. +При записи «1» соответствующий биту вывод устанавливается в «1» + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + CLEAR + Текущее состояние прерываний / Установка «0» +При чтении – текущее состояние запросов прерываний. +При записи бита «1» соответствующий биту вывод устанавливается в «0» + 0x04 + write-only + 0x0 + 0xFFFFFFFF + + + DIRECTION_OUT + Установка направления выводов как выход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «выход» + + 0x08 + read-write + 0xFF + 0xFFFFFFFF + + + DIRECTION_IN + Установка направления выводов как вход +При чтении – текущее направление выводов: +0 – выход; +1 – вход. +Запись «1» устанавливает соответствующий вывод как «вход» + 0x0C + read-write + 0xFF + 0xFFFFFFFF + + + OUTPUT + Выходной регистр +Чтение возвращает содержимое выходного регистра независимо от текущего направления выводов +Запись устанавливает значения всех битов выходного регистра + 0x10 + read-write + 0x0 + 0xFFFFFFFF + + + CONTROL + Тестовый режим +Запись «1» в [0:0] разряд – включение тестового режима (выходы замкнуты на входы внутри модуля) +Запись «0» в [0:0] разряд – нормальный режим + 0x14 + read-write + 0x0 + 0xFFFFFFFF + + + + + GPIO_IRQ + Модуль формирования прерываний + 0x00084C00 + + 0x00 + 0x30 + registers + + + + STATE + Текущее состояние линий после мультиплексоров. +Номер бита соответствует линии запроса прерывания + 0x00 + read-only + 0x0 + 0xFFFFFFFF + + + LINE_MUX + Управление мультиплексорами. Каждый мультиплесор управляется своими 4 битами: +Mux_0 – [3:0]; +Mux_1 – [7:4]; +Mux_2 – [11:8]; +Mux_3 – [15:12]; +Mux_4 – [19:16]; +Mux_5– [23:20]; +Mux_6 – [27:24]; +Mux_7 – [31:28] + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + INTERRUPT + Текущее состояние прерываний. +Номер бита соответсвует номеру линии. + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + ENABLE_SET + Регистр разрешения прерываний +При чтении – текущее состояние разрешений прерываний. +При записи «1» разрешает прерывание от соответствующей линии. + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + ENABLE_CLEAR + Регистр запрета прерываний +При чтении – текущее состояние разрешений прерываний. +При записи «1» запрещает прерывание от соответствующей линии + 0x10 + read-write + 0x0 + 0xFFFFFFFF + + + EDGE + Регистр типа прерываний. +При чтении – текущий тип прерывания: «1» – по событию (фронт или спад), «0» – по уровню. +Запись «1» – прерывание формируется по событию для соответствующего канала +Запись «0» - не влияет + 0x14 + read-write + 0x0 + 0xFFFFFFFF + + + LEVEL + Регистр типа прерываний. +При чтении – текущий тип прерывания (инвертированный): «0» – по событию; «1» – по уровню. +Запись «1» – прерывание формируется по уровню для соответствующего канала +Запись «0» - не влияет + 0x18 + read-write + 0xFF + 0xFFFFFFFF + + + LEVEL_SET + Регистр выбора уровня / события прерываний. +При чтении: +«0» – прерывания формируются по спаду или уровню логического «0»; +«1» – прерывания формируются по нарастающему фронту или уровню логической «1» +Запись «1» – прерывание формируется по нарастающему фронту или уровню логической «1» для соответствующей линии + 0x1C + read-write + 0x0 + 0xFFFFFFFF + + + LEVEL_CLEAR + Регистр уровня / события прерываний. +При чтении: +«0» – прерывания формируются по спаду или уровню логического «0»; +«1» – прерывания формируются по нарастающему фронту или уровню логической «1» +Запись «1»– прерывание формируется по спаду или уровню логического «0» для соответствующей линии + + 0x20 + read-write + 0x0 + 0xFFFFFFFF + + + ANY_EDGE_SET + Регистр прерываний по любому событию. +Запись «1» – прерывание формируется по любому изменению соответствующей линии + 0x24 + read-write + 0x0 + 0xFFFFFFFF + + + ANY_EDGE_CLEAR + Регистр прерываний по любому событию. +Запись «1» – прерывание не формируется по любому изменению соответствующей линии + 0x28 + read-write + 0x0 + 0xFFFFFFFF + + + CLEAR + Регистр сброса флагов прерываний по событию. +Запись «1» – очищает флаг прерывания соответствующей линии + 0x2C + write-only + oneToClear + + + + + DAC0 + Управление ЦАП + 0x00085000 + + 0x0 + 0x8 + registers + + + + DAC0_CFG + Регистр настройки ЦАП0 + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + EMPTY_READ + Признак заполненности регистра DAC_VALUE + [13:13] + read-only + + + Full + Значение, хранящееся в DAC_VALUE было сдвинуто в ЦАП, возможна запись следующего значения + 0b00 + + + Empty + В регистре DAC_Value находится необработанное значение. Автоматически сбрасывается при записи в DAC_Value + 0b01 + + + + + EXTPAD + Выбор источника внешнего опорного напряжения + [11:11] + read-write + + + Calibrated_voltage_reference + Настраиваемый ИОН + 0b00 + + + REF_DAC_PIN + Внешний вывод REF_ADC_DAC (PORT1_11) + 0b01 + + + + + EXTEN + Выбор источника опорного напряжения + [10:10] + read-write + + + Internal + Встроенный + 0b00 + + + External + Внешний + 0b01 + + + + + DIV + Значение делителя тактового сигнала. Частота определяется как FЦАП=FIN/(DIV+1) + [9:2] + read-write + + + RN + Управление сбросом ЦАП, активный уровень «0» + [1:1] + read-write + + + EN + Управление питанием ЦАП + [0:0] + read-write + + + Disable + Выключен + 0b00 + + + Enable + Включен + 0b01 + + + + + + + DAC0_VALUE + Входные данные для ЦАП0 + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + VALUE + Входные данные для прерывания + [11:0] + read-write + + + + + + + DAC1 + Управление ЦАП + 0x00085008 + + 0x0 + 0x8 + registers + + + + DAC1_CFG + Регистр настройки ЦАП1 + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + EMPTY_READ + Признак заполненности регистра DAC_VALUE + [13:13] + read-only + + + Full + Значение, хранящееся в DAC_VALUE было сдвинуто в ЦАП, возможна запись следующего значения + 0b00 + + + Empty + В регистре DAC_Value находится необработанное значение. Автоматически сбрасывается при записи в DAC_Value + 0b01 + + + + + EXTPAD + Выбор источника внешнего опорного напряжения + [11:11] + read-write + + + Calibrated_voltage_reference + Настраиваемый ИОН + 0b00 + + + REF_DAC_PIN + Внешний вывод REF_ADC_DAC (PORT1_11) + 0b01 + + + + + EXTEN + Выбор источника опорного напряжения + [10:10] + read-write + + + Internal + Встроенный + 0b00 + + + External + Внешний + 0b01 + + + + + DIV + Значение делителя тактового сигнала. Частота определяется как FЦАП=FIN/(DIV+1) + [9:2] + read-write + + + RN + Управление сбросом ЦАП, активный уровень «0» + [1:1] + read-write + + + EN + Управление питанием ЦАП + [0:0] + read-write + + + Disable + Выключен + 0b00 + + + Enable + Включен + 0b01 + + + + + + + DAC1_VALUE + Входные данные для ЦАП1 + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + VALUE + Входные данные для прерывания + [11:0] + read-write + + + + + + + PVD_AVCC + Управление монитором напряжения AVCC + 0x00085010 + + 0x00 + 0x0C + registers + + + + DPF_VALUE + Настройка цифрового фильтра + 0x0 + read-write + 1500 + 0xFFFFFFFF + + + DPF + Коэффициент, определяющий длительность отфильтровываемых импульсов (на системной частоте) + [15:0] + read-write + + + + + CONFIG + Регистр настроек + 0x04 + read-write + 0x1 + 0xFFFFFFFF + + + EN_VREFCLB + Использование в качестве опорного источника напряжения каллибруемый ОИН + [12:12] + read-write + + + OVER_THRESH + Верхний порог срабатывания монитора + [11:8] + read-write + + + UNDER_THRESH + Нижний порог срабатывания монитора + [7:4] + read-write + + + TESTMODE + Переход в тестовый режим + [3:3] + read-write + + + NRESETO + Отключение (сброс) детектирования вехнего порога + [2:2] + read-write + + + Reset + Детектирование не выполняется, схема в состоянии сброса + 0b00 + + + Normal + Нормальная работа + 0b01 + + + + + NRESETU + Отключение (сброс) детектирования нижнего порога + [1:1] + read-write + + + Reset + Детектирование не выполняется, схема в состоянии сброса + 0b00 + + + Normal + Нормальная работа + 0b01 + + + + + PD + Управление питанием монитора + [0:0] + read-write + + + Enable + Монитор включен + 0b00 + + + Disable + Монитор выключен + 0b01 + + + + + + + STATUS + Регистр статуса + 0x08 + read-only + 0x0 + 0xFFFFFFFF + + + OUT_OVER_FLAG + Текущее состояние линии монитора верхнего порога с учетом цифровой фильтрации + [3:3] + read-only + + + OUT_UNDER_FLAG + Текущее состояние линии монитора нижнего порога с учетом цифровой фильтрации + [2:2] + read-only + + + OUT_OVER_VALUE + Текущее состояние линии монитора верхнего порога без цифровой фильтрации + [1:1] + read-only + + + OUT_UNDER_VALUE + Текущее состояние линии монитора нижнего порога без цифровой фильтрации + [0:0] + read-only + + + + + + + TSENS + Управление температурным сенсором + 0x0008501C + + 0x00 + 0x1C + registers + + + + TSENS_CFG + Регистр настроек + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + DIV + Значение делителя тактового сигнала. Частота сенсора определяется как Tsens = Fin/(2*(Div + 1)) + [15:6] + read-write + + + CLK_MUX + Выбор источника тактирования сенсора (Fin) + [5:3] + read-write + + + Sys_clk + системная частота (sys_clk) + 0x00 + + + HCLK + Частота шины AHB (hclk) + 0x01 + + + OSC32M + Частота внешнего осциллятора 32 МГц + 0x02 + + + HSI32M + Частота HSI32M + 0x03 + + + OSC32K + Частота внешнего осциллятора 32 кГц + 0x04 + + + LSI32K + Частота LSI32K + 0x05 + + + + + NRST + Управление сбросом сенсора, активный уровень «0» + [2:2] + read-write + + + NPD_CLK + Управление тактированием сенсора + [1:1] + read-write + + + Disable + Тактирование сенсора выключено + 0x00 + + + Enable + Тактирование сенсора включено + 0x01 + + + + + NPD + Управление питанием сенсора + [0:0] + read-write + + + Disable + Сенсор выключен + 0x00 + + + Enable + Сенсор включен + 0x01 + + + + + + + TSENS_TRESHOLD + Регистр пороговых значений + 0x04 + read-write + 231003 + 0xFFFFFFFF + + + TRESHOLD_LOW + При значении выхода сенсора менее LOW_THRESHOLD будет формироваться прерывание. Значение по умолчанию соответствует температуре -40 оС + [19:10] + read-write + + + TRESHOLD_HI + При значении выхода сенсора больше HI_THRESHOLD будет формироваться прерывание. Значение по умолчанию соответствует температуре 125 оС + [9:0] + read-write + + + + + TSENS_IRQ + Регистр прерываний + 0x8 + read-write + 0x0 + 0xFFFFFFFF + + + LOW_IRQ + Статус прерывания события «выход сенсора меньше порогового значения LOW_ THRESHOLD» + [5:5] + read-only + + + HI_IRQ + Статус прерывания события «выход сенсора больше порогового значения HI_THRESHOLD» + [4:4] + read-only + + + EOC_IRQ + Статус прерывания по окончанию преобразования + [3:3] + read-only + + + LOW_MASK + Маска прерывания события «выход сенсора меньше порогового значения LOW_ THRESHOLD» + [2:2] + read-write + + + HI_MASK + Маска прерывания события «выход сенсора больше порогового значения HI_THRESHOLD» + [1:1] + read-write + + + EOC_MASK + Маска прерывания по окончанию преобразования + [0:0] + read-write + + + + + TSENS_CLEAR_IRQ + Регистр сброса прерываний + 0xC + write-only + 0x0 + 0xFFFFFFFF + oneToClear + + + LOW_CLEAR + Сброс прерывания события «выход сенсора меньше порогового значения LOW_ THRESHOLD» + [2:2] + write-only + oneToClear + + + HI_CLEAR + Сброс прерывания события «выход сенсора больше порогового значения HI_THRESHOLD» + [1:1] + write-only + oneToClear + + + EOC_CLEAR + Сброс прерывания по окончанию преобразования + [0:0] + write-only + oneToClear + + + + + TSENS_VALUE + Регистр данных + 0x10 + read-only + 0x0 + 0xFFFFFFFF + + + EOC + Текущее значение выхода окончания преобразования + [10:10] + read-only + + + VALUE + Последнее измереннное значение сенсором + [9:0] + read-only + + + + + TSENS_SINGLE + Регистр запуска однократного измерения + 0x14 + write-only + 0x0 + 0xFFFFFFFF + + + SINGLE + Запуск одного измерения + [0:0] + write-only + + + + + TSENS_CONTINUOUS + Регистр запуска непрерывного измерения + 0x34 + write-only + 0x0 + 0xFFFFFFFF + + + CONTINUOUS + Запуск / остановка непрерывного измерения температуры + [0:0] + write-only + + + + + + + REFV_CONFIG + Управление калибруемыми источниками напряжения и тока + 0x00085038 + + 0x00 + 0x4 + registers + + + + REF_CLB + Управление калибруемыми источниками тока и напряжения + 0x00 + read-write + 0x188 + 0xFFFFFFFF + + + CLB_EN + Разрешение работы калибруемых источников + [8:8] + read-write + + + Disable + Включить + 0b00 + + + Enable + Выключить + 0b01 + + + + + COEF_REFICLB + Коэфициент настройки опорного источника тока + [7:4] + read-write + + + COEF_REFVCLB + Коэфициент настройки опорного источника напряжения + [3:0] + read-write + + + + + + + ADC + Управление АЦП + 0x0008503C + + 0x00 + 0x14 + registers + + + + ADC_CONFIG + Регистр настройки АЦП + 0x00 + read-write + 0x0 + 0xFFFFFFFF + + + SAH_TIME + Время выборки очередного отсчета в тактах АЦП + [13:8] + read-write + + + SEL + Выбор канала АЦП + [6:4] + read-write + + + EXTPAD_EN + Выбор источника внешнего опорного напряжения + [3:3] + read-write + + + Calibrated_voltage_reference + Настраиваемый ИОН + 0b00 + + + REF_DAC_PIN + Внешний вывод REF_ADC_DAC (PORT1_11) + 0b01 + + + + + EXTREF + Выбор источника опорного напряжения + [2:2] + read-write + + + Internal + Встроенный + 0b00 + + + External + Внешний + 0b01 + + + + + RESETN + Управление сбросом АЦП, активный уровень «0» + [1:1] + read-write + + + EN + Управление питанием АЦП + [0:0] + read-write + + + Disable + Выключен + 0b00 + + + Enable + Включен + 0b01 + + + + + + + ADC_CONTINUOUS + Управление непрерывным измерением + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + CONTINUOUS + Запуск / остановка непрерывного измерения + [0:0] + read-write + + + + + ADC_SINGLE + Управление однократным измерением + 0x08 + write-only + 0x0 + 0xFFFFFFFF + + + SINGLE + Запуск однократного измерения + [0:0] + write-only + + + + + ADC_VALID + Регистр статуса + 0x0C + read-only + 0x0 + 0xFFFFFFFF + + + VALID + Признак наличия актуальных данных + [0:0] + read-only + + + + + ADC_VALUE + Регистр данных + 0x10 + read-only + 0x0 + 0xFFFFFFFF + + + VALUE + Результат преобразования + [11:0] + read-only + + + + + + + SCR1_TIMER + Регистры системного таймера + 0x00490000 + + 0x00 + 0x18 + registers + + + + TIMER_CTRL + Регистр конфигурации + 0x00 + read-write + 0x1 + 0xFFFFFFFF + + + CLKSRC + Источник тактирования системного таймера + [1:1] + read-write + + + HCLK + Тактирование ядра (частота шины AHB hclk) + 0b00 + + + External_clk + Внешний RTC (источник выбранный в PM.CPU_RTC_CLK_MUX) + 0b01 + + + + + ENABLE + Включение таймера + [0:0] + read-write + + + Diasable + Таймер выключен + 0b00 + + + Enable + Таймер включен + 0b01 + + + + + + + TIMER_DIV + Делитель частоты. Счет идет каждые DIV+1 такта частоты + 0x04 + read-write + 0x0 + 0xFFFFFFFF + + + MTIME + Счетчик таймера, младшее слово + 0x08 + read-write + 0x0 + 0xFFFFFFFF + + + MTIMEH + Счетчик таймера, старшее слово + 0x0C + read-write + 0x0 + 0xFFFFFFFF + + + MTIMECMP + Регистр сравнения, младшее слово + 0x10 + read-write + 0x0 + 0xFFFFFFFF + + + MTIMECMPH + Регистр сравнения, старшее слово + 0x14 + read-write + 0x0 + 0xFFFFFFFF + + + + + \ No newline at end of file diff --git a/cores/arduino/trap_handler.c b/cores/arduino/trap_handler.c index 99a1172..e3c5901 100644 --- a/cores/arduino/trap_handler.c +++ b/cores/arduino/trap_handler.c @@ -5,7 +5,7 @@ extern void serial_interrupt_handler(uint8_t uartNumInt); extern void gpio_interrupt_handler(void); extern void tone_interrupt_handler(void); -void __attribute__((weak)) wire_interrupt_handler(void) +void __attribute__((weak)) wire_interrupt_handler(uint8_t num) { // dummy function for case when wire library is not in use } @@ -13,6 +13,10 @@ void __attribute__((weak)) servo_interrupt_handler(void) { // dummy function for case when servo library is not in use } +void __attribute__((weak)) IRremote_interrupt_handler(void) +{ + // dummy function for case when IRremote library is not in use +} void __attribute__((weak)) ISR(void) { @@ -21,13 +25,16 @@ void __attribute__((weak)) ISR(void) In the project, you need to create a function of the form: extern "C" void ISR() { - // timer16 is taken as an example - if (TIM16_GET_ARRM_INT_STATUS(htimer16_1_)) + if (EPIC_CHECK_TIMER16_1()) { - // necessary actions + // timer16 is taken as an example + if (TIM16_GET_ARRM_INT_STATUS(htimer16_1_)) + { + // necessary actions + } + // reset timer interrupt flags + TIM16_CLEAR_INT_MASK(htimer16_1_, 0xFFFFFFFF); } - // reset timer interrupt flags - TIM16_CLEAR_INT_MASK(htimer16_1_, 0xFFFFFFFF); } libraries required to use this example: #include "mik32_hal_timer16.h" @@ -46,6 +53,10 @@ void __attribute__((noinline, section(".ram_text"), optimize("O3"))) trap_handle if (EPIC_CHECK_GPIO_IRQ()) gpio_interrupt_handler(); + // IRremote timer interrupt + if (EPIC_CHECK_TIMER16_0()) + IRremote_interrupt_handler(); + // tone timer interrupt if (EPIC_CHECK_TIMER16_1()) tone_interrupt_handler(); @@ -62,9 +73,12 @@ void __attribute__((noinline, section(".ram_text"), optimize("O3"))) trap_handle if (EPIC_CHECK_UART_1()) serial_interrupt_handler(1); - // i2c interrupt + // i2c0 interrupt + if (EPIC_CHECK_I2C_0()) + wire_interrupt_handler(0); + if (EPIC_CHECK_I2C_1()) - wire_interrupt_handler(); + wire_interrupt_handler(1); // reset all interrupts EPIC_CLEAR_ALL(); diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index 44a481b..1dc6775 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -73,6 +73,7 @@ uint32_t analogRead(uint32_t PinNumber) // extra least significant bits read from the ADC are discarded value = (value >> (MCU_ADC_RESOLUTION - currentResolution)); } + additionalPinsDeinit(PinNumber); } else ErrorMsgHandler("analogRead(): invalid analog pin number"); @@ -86,7 +87,6 @@ uint32_t analogRead(uint32_t PinNumber) #define PWM_RESOLUTION_DEFAULT 8 #define WRITE_VAL_MAX_DEFAULT ((1< 0) && (digitalPinPwmIsOn(PinNumber))) + if (digitalPinHasPWM(PinNumber) && (pwmIsInited > 0) && digitalPinPwmIsOn(PinNumber)) { // load the timer address and channel number corresponding to the specified pin htimer32.Instance = pwmPinToTimer(PinNumber); diff --git a/cores/arduino/wiring_digital.c b/cores/arduino/wiring_digital.c index 3e24bc6..7c678ef 100644 --- a/cores/arduino/wiring_digital.c +++ b/cores/arduino/wiring_digital.c @@ -19,6 +19,7 @@ #include "Arduino.h" #include "pins_arduino.h" #include "mik32_hal_gpio.h" +#include "wiring_LL.h" #ifdef __cplusplus extern "C" { @@ -66,51 +67,82 @@ void pinMode(uint32_t PinNumber, uint32_t PinMode) additionalPinsInit(PinNumber); } +void fastPinMode(uint32_t PinNumber, uint32_t PinMode) +{ + if ((PinNumber>=pinCommonQty())) + { + ErrorMsgHandler("fastPinMode(): pin number exceeds the total number of pins"); + return; + } + + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef pinMask = digitalPinToBitMask(PinNumber); + + // set direction + if (PinMode == OUTPUT) + GPIO_OUTPUT_MODE_PIN(port, pinMask); + else + GPIO_INPUT_MODE_PIN(port, pinMask); + + // set pullup + if (PinMode == INPUT_PULLUP) + { + uint8_t pos = PIN_MASK_TO_PIN_NUMBER(pinMask); + if (port == GPIO_0) PIN_SET_PAD_CONFIG(PORT_0_PUPD, pos, HAL_GPIO_PULL_UP); + else if (port == GPIO_1) PIN_SET_PAD_CONFIG(PORT_1_PUPD, pos, HAL_GPIO_PULL_UP); + else PIN_SET_PAD_CONFIG(PORT_2_PUPD, pos, HAL_GPIO_PULL_UP); + } +} + // write pin -void digitalWrite(uint32_t PinNumber, uint32_t Val) +__attribute__((noinline, section(".ram_text"))) void digitalWrite(uint32_t PinNumber, uint32_t Val) { if ((PinNumber>=pinCommonQty())) { ErrorMsgHandler("digitalWrite(): pin number exceeds the total number of pins"); return; } - - if (digitalPinHasPWM(PinNumber)) + + if (digitalPinPwmIsOn(PinNumber)) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - HAL_GPIO_WritePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), (Val == HIGH) ? GPIO_PIN_HIGH : GPIO_PIN_LOW); + if (Val == HIGH) + GPIO_SET_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + else + GPIO_CLEAR_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); } // read pin -int digitalRead(uint32_t PinNumber) +__attribute__((noinline, section(".ram_text"))) int digitalRead(uint32_t PinNumber) { if ((PinNumber>=pinCommonQty())) { ErrorMsgHandler("digitalRead(): pin number exceeds the total number of pins"); return -1; } - if (digitalPinHasPWM(PinNumber)) + + if (digitalPinPwmIsOn(PinNumber)) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - GPIO_PinState pinState = HAL_GPIO_ReadPin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); - return (pinState == GPIO_PIN_LOW) ? LOW : HIGH; + return GPIO_READ_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); } // toggle pin -void digitalToggle(uint32_t PinNumber) +__attribute__((noinline, section(".ram_text"))) void digitalToggle(uint32_t PinNumber) { if ((PinNumber>=pinCommonQty())) { ErrorMsgHandler("digitalToggle(): pin number exceeds the total number of pins"); return; } - if (digitalPinHasPWM(PinNumber)) + + if (digitalPinPwmIsOn(PinNumber)) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - - HAL_GPIO_TogglePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + + GPIO_TOGGLE_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); } #ifdef __cplusplus diff --git a/cores/arduino/wiring_digital.h b/cores/arduino/wiring_digital.h index ed5cb82..9c5bea8 100644 --- a/cores/arduino/wiring_digital.h +++ b/cores/arduino/wiring_digital.h @@ -26,26 +26,35 @@ extern "C" { /** * \brief Configures the specified pin to behave either as an input or an output. * - * \param dwPin The number of the pin whose mode you wish to set - * \param dwMode Either INPUT, INPUT_PULLUP or OUTPUT + * \param PinNumber The number of the pin whose mode you wish to set + * \param PinMode Either INPUT, INPUT_PULLUP or OUTPUT */ void pinMode(uint32_t PinNumber, uint32_t PinMode); +/** + * \brief Configures the specified pin to behave either as an input or an output + * using quick macros and without calling checks + * + * \param PinNumber The number of the pin whose mode you wish to set + * \param PinMode Either INPUT, INPUT_PULLUP or OUTPUT + */ +void fastPinMode(uint32_t PinNumber, uint32_t PinMode); + /** * \brief Write a HIGH or a LOW value to a digital pin. * * If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the * corresponding value: 3.3V for HIGH, 0V (ground) for LOW. * - * \param dwPin the pin number - * \param dwVal HIGH or LOW + * \param PinNumber the pin number + * \param PinMode HIGH or LOW */ void digitalWrite(uint32_t PinNumber, uint32_t Val); /** * \brief Reads the value from a specified digital pin, either HIGH or LOW. * - * \param ulPin The number of the digital pin you want to read (int) + * \param PinNumber The number of the digital pin you want to read (int) * * \return HIGH or LOW */ @@ -54,7 +63,7 @@ int digitalRead(uint32_t PinNumber); /** * \brief Toggle the value from a specified digital pin. * - * \param ulPin The number of the digital pin you want to toggle (int) + * \param PinNumber The number of the digital pin you want to toggle (int) */ void digitalToggle(uint32_t PinNumber); diff --git a/docs/Elbear_description.md b/docs/Elbear_description.md index c8be9f2..dc8f0f0 100644 --- a/docs/Elbear_description.md +++ b/docs/Elbear_description.md @@ -1,9 +1,9 @@ -# Elbear Ace-Uno -Особенности работы с платами Elbear Ace-Uno в среде программирования ArduinoIDE. +# ELBEAR ACE-UNO +Особенности работы с платами ELBEAR ACE-UNO в среде программирования ArduinoIDE. ### Функциональное назначение выводов -![Pinout](pinout.PNG) +![Pinout](uno_pinout.png) ### Цифровые выводы -На плате Elbear Ace-Uno доступны встроенные светодиод и кнопка. Для их использования необходимо воспользоваться макросами `LED_BUILTIN` и `BTN_BUILTIN`, передавая их в качестве аргументов функции вместо номера цифрового вывода. Макросу `LED_BUILTIN` соответствует номер вывода D22, а макросу `BTN_BUILTIN` - D23. +На плате ELBEAR ACE-UNO доступны встроенные светодиод и кнопка. Для их использования необходимо воспользоваться макросами `LED_BUILTIN` и `BTN_BUILTIN`, передавая их в качестве аргументов функции вместо номера цифрового вывода. Макросу `LED_BUILTIN` соответствует номер вывода D22, а макросу `BTN_BUILTIN` - D23. ### Аналоговые выводы Выводы A0...A5 на плате могут использоваться как в аналоговом, так и в цифровом режиме. Для использования вывода в качестве аналогового необходимо перевести соответствующий DIP-переключатель, расположенный рядом с аналоговыми выводами, в положение OFF. В этом режиме внешнее напряжение, подаваемое на вывод, будет понижаться резистивным делителем перед подачей на микроконтроллер. @@ -18,10 +18,10 @@ |А4|5| |А5|5| #### ШИМ -На плате Elbear Ace-Uno доступно 8 выводов для формирования ШИМ-сигнала: D3, D5, D6, D9...D13. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10...D13 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. -Цифровой вывод D10 не может быть использован для генерации ШИМ, если одновременно активен интерфейс SPI. Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D10 в качестве цифрового вывода при активном SPI. +На плате ELBEAR ACE-UNO доступно 8 выводов для формирования ШИМ-сигнала: D3, D5, D6, D9...D13. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10...D13 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +Цифровые выводы D9, D10 не могут быть использованы для генерации ШИМ, если одновременно активен интерфейс SPI (при использовании экземпляра `SPI` недоступен ШИМ на выводе D10, при использовании экземпляра `SPI1` - на выводе D9). Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D9, D10 в качестве цифрового вывода при активном SPI. ### Прерывания -На плате Elbear Ace-Uno доступно 8 прерываний, настраиваемых функцией `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`: +На плате ELBEAR ACE-UNO доступно 8 прерываний, настраиваемых функцией `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`: |Цифровой вывод|Номер прерывания| |---------|---------| @@ -38,4 +38,8 @@ ### Serial Интерфейс UART0 доступен на выводах D0, D1, для работы с ним используется экземпляр класса под названием `Serial`. -Интерфейс UART1 доступен на выводах D7, D8, используемый экземпляр класса - `Serial1`. \ No newline at end of file +Интерфейс UART1 доступен на выводах D7, D8, используемый экземпляр класса - `Serial1`. + +### SPI +Интерфейс SPI1 доступен на выводах D11, D12, D13. Для работы с ним используется экземпляр класса под названием `SPI`. +Интерфейс SPI0 доступен на выводах D3, D5, D6. Используемый экземпляр класса - `SPI1`. \ No newline at end of file diff --git a/docs/Pinout_nano.PNG b/docs/Pinout_nano.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5d2f5c3805ccd9a8298a042b6e33e0c77b8a4224 GIT binary patch literal 1076020 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¥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

*i`c_?Jo_2vM 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

OyX9qJq%awLnxRzc51TvrTd3s> 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