main.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * \file
  3. *
  4. * \brief RWWEE Flash Array Read-Write Example
  5. *
  6. * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries.
  7. *
  8. * \asf_license_start
  9. *
  10. * \page License
  11. *
  12. * Subject to your compliance with these terms, you may use Microchip
  13. * software and any derivatives exclusively with Microchip products.
  14. * It is your responsibility to comply with third party license terms applicable
  15. * to your use of third party software (including open source software) that
  16. * may accompany Microchip software.
  17. *
  18. * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
  19. * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
  20. * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
  21. * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
  22. * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
  23. * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
  24. * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
  25. * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
  26. * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
  27. * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
  28. * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
  29. *
  30. * \asf_license_stop
  31. *
  32. */
  33. /*
  34. * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
  35. */
  36. #include <atmel_start.h>
  37. #include "driver_init.h"
  38. static uint8_t src_buff[128];
  39. static uint8_t chk_buff[128];
  40. /**
  41. * Example of using FLASH to read and write Flash RWWEE array.
  42. */
  43. void rww_flash(void)
  44. {
  45. uint32_t page_size;
  46. uint16_t i;
  47. bool is_corrupted = false;
  48. /* Init source data */
  49. page_size = _rww_flash_get_page_size(&FLASH_0.dev);
  50. for (i = 0; i < page_size; i++) {
  51. src_buff[i] = i;
  52. }
  53. /* Write data to RWWEE flash */
  54. if (_rww_flash_write(&FLASH_0.dev, NVMCTRL_RWW_EEPROM_ADDR, src_buff, page_size) != ERR_NONE) {
  55. printf("RWW flash write failed.");
  56. }
  57. /* Read data from RWWEE flash */
  58. if (_rww_flash_read(&FLASH_0.dev, NVMCTRL_RWW_EEPROM_ADDR, chk_buff, page_size) != ERR_NONE) {
  59. printf("RWW flash read failed.");
  60. }
  61. /* Check data */
  62. for (i = 0; i < page_size; i++) {
  63. if (src_buff[i] != chk_buff[i]) {
  64. is_corrupted = true;
  65. printf("RWW Flash data verification failed.");
  66. break;
  67. }
  68. }
  69. if (!is_corrupted) {
  70. printf("One page Write - Read is successful in RWW Flash memory");
  71. }
  72. }
  73. int main(void)
  74. {
  75. /* Initializes MCU, drivers and middleware */
  76. atmel_start_init();
  77. /* Read and write Flash RWWEE array */
  78. rww_flash();
  79. while (1) {
  80. }
  81. }