<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/70009/nrf52832-flash-write-issue</link><description>I want to write a piece of big data to flash. Every time I write 112 word length, I write it many times. Every time I write, the address is shifted back 112. Before I write, I need to erase the pages that need to be written. However, I find that only</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 05 Jan 2021 01:07:10 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/70009/nrf52832-flash-write-issue" /><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287357?ContentTypeID=1</link><pubDate>Tue, 05 Jan 2021 01:07:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:24b979a1-317f-4d45-ad5e-229f14397970</guid><dc:creator>zzzZ</dc:creator><description>&lt;p&gt;Thanks！resolved&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287051?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 09:16:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9d7e019b-b39c-4b1e-b492-2667234cde4f</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;You may refer the example&amp;nbsp;&lt;span&gt;flash_fstorage. Your problems can be solved.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287048?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 09:05:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:af8db63b-a32d-4d67-9701-5e551d08ab5f</guid><dc:creator>zzzZ</dc:creator><description>&lt;div class="trans-right"&gt;
&lt;div class="output-wrap"&gt;
&lt;div class="output-mod ordinary-wrap"&gt;
&lt;div class="output-bd" style="padding-bottom:0px;" dir="ltr"&gt;
&lt;p class="ordinary-output target-output clearfix"&gt;&lt;span class=""&gt;Among the APIs used, wait ready&amp;nbsp;function is used&lt;/span&gt;&lt;/p&gt;
&lt;p class="ordinary-output target-output clearfix"&gt;&lt;span class=""&gt;uint32_t sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (size &amp;gt; FLASH_WRITE_MAX_LENGTH)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRF_ERROR_INVALID_LENGTH;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!addr_is_in_FLASH(p_dst))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRF_ERROR_INVALID_ADDR;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#ff0000;"&gt;nrf_nvmc_write_words&lt;/span&gt;((uint32_t) p_dst, p_src, size);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_flash_op_handler(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRF_SUCCESS;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="ordinary-output target-output clearfix"&gt;&lt;span class=""&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="ordinary-output target-output clearfix"&gt;&lt;span class=""&gt;void nrf_nvmc_write_words(uint32_t address, const uint32_t * src, uint32_t num_words)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t i;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable write.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Wen;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DSB();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; num_words; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint32_t*)address)[i] = src[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:150%;"&gt;&amp;nbsp; &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;wait_for_flash_ready();&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Ren;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DSB();&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287047?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 08:59:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:add4682d-5e2a-4a64-8917-50ff02089139</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;Okay,...So the write words in next address should be empty. It&amp;#39;s right. But I suggest that the wait ready function not to apply delay. You may refer the example code \nRF5_SDK_17.0.2_d674dde\examples\peripheral\flash_fstorage&lt;/p&gt;
&lt;p&gt;wait_for_flash_ready();&lt;/p&gt;
&lt;p&gt;It&amp;#39;s the function check for NV timing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287046?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 08:49:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:06f8a361-de7e-4151-b152-716c9257753f</guid><dc:creator>zzzZ</dc:creator><description>&lt;p&gt;#define START_ERASE_PAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 86&lt;/p&gt;
&lt;p&gt;#define OTA_DATA_START_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x56000&lt;/p&gt;
&lt;p&gt;uint8_t *tag_ota_write_addr = (uint8_t *)(OTA_DATA_START_ADDRESS);&lt;/p&gt;
&lt;p&gt;void tag_ota_erase(uint8 page)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;tag_ota_erase \n&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; page; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sd_flash_page_erase(START_ERASE_PAGE + i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;tag_ota_erase page : %d\n&amp;quot;,START_ERASE_PAGE+i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_delay_ms(100);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;At the time of initialization, 10 pages have been erased.&lt;/p&gt;
&lt;p&gt;using&lt;/p&gt;
&lt;p&gt;tag_ota_erase(10);&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287045?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 08:42:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a7d82981-d8f6-4bec-bef3-c9c4628623f7</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;So it&amp;#39;s the next 112 words write-cycling. But how about the page erase when you write cross over a page?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287044?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 08:38:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3fd5e344-e223-4d41-990a-c40d48908f1c</guid><dc:creator>zzzZ</dc:creator><description>&lt;p&gt;My code is as below:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;#define TEST_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp; 112&lt;br /&gt;#define WRITE_TIME&amp;nbsp;&amp;nbsp; &amp;nbsp;10&lt;br /&gt;void write_test(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8 ota_data[TEST_LEN] = {0};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; TEST_LEN; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ota_data[i] = i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; WRITE_TIME; i ++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sd_flash_write((uint32_t *)tag_ota_write_addr, (uint32_t *)ota_data, TEST_LEN);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;addr = 0x%x&amp;quot;, tag_ota_write_addr);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tag_ota_write_addr += TEST_LEN;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_delay_ms(200);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 FLASH write issue</title><link>https://devzone.nordicsemi.com/thread/287043?ContentTypeID=1</link><pubDate>Thu, 31 Dec 2020 08:36:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a7f7b2c3-5636-47ce-81bf-77379e5822ae</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;May your show your processing code? I can&amp;#39;t understand your meaning in your statement.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s re-write 112 words (uint32_t)in original address , or write next 112 words in next 112 offset address.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>