Data sample and LCD plot
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG SDRAM_DISCO_F746NG mbed
Revision 0:b3e6088c873f, committed 2018-02-10
- Comitter:
- tapiov
- Date:
- Sat Feb 10 20:19:36 2018 +0000
- Child:
- 1:c3c61d08f31b
- Commit message:
- First commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_DISCO_F746NG.lib Sat Feb 10 20:19:36 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/BSP_DISCO_F746NG/#df2ea349c37a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD_DISCO_F746NG.lib Sat Feb 10 20:19:36 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/LCD_DISCO_F746NG/#d44525b1de98
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDRAM_DISCO_F746NG.lib Sat Feb 10 20:19:36 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/SDRAM_DISCO_F746NG/#370f402a2219
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat Feb 10 20:19:36 2018 +0000
@@ -0,0 +1,159 @@
+#include "mbed.h"
+#include <string.h>
+#include "LCD_DISCO_F746NG.h"
+#include "SDRAM_DISCO_F746NG.h"
+
+LCD_DISCO_F746NG lcd;
+SDRAM_DISCO_F746NG sdram;
+
+#define BUFFER_SIZE ((uint32_t)0x0001)
+#define WRITE_READ_ADDR ((uint32_t)0x0800)
+
+void FillBuffer(uint32_t *pBuffer, uint32_t BufferLength, uint32_t Offset);
+uint8_t CompareBuffer(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength);
+
+Ticker ms_tick;
+uint32_t idx;
+uint32_t WRITE_READ_ADDR; (()0x0800)
+
+void onTimingEventTicker(void)
+{
+ // this code will run every timing event
+ uint32_t result;
+ uint32_t y_coord;
+
+ AnalogIn ain(A0);
+
+ result = (0x0000 << 16) | ain.read_u16();
+
+ // Fill the write buffer
+ FillBuffer(WriteBuffer, BUFFER_SIZE, result);
+
+ // Write buffer
+ sdram.WriteData(SDRAM_DEVICE_ADDR + WRITE_READ_ADDR + idx, WriteBuffer, BUFFER_SIZE);
+
+ idx++;
+}
+
+uint32_t PlotData(void)
+{
+ // this code will run every timing event
+ uint32_t result;
+ uint32_t y_coord;
+
+ AnalogIn ain(A0);
+
+ if (x_coord == 0) { lcd.Clear(LCD_COLOR_BLUE); }
+
+ result = (0x0000 << 16) | ain.read_u16();
+
+ y_coord=(272.0*result)/16384.0;
+
+
+ if (x_coord < 480) { x_coord++; } else { x_coord=0; }
+
+ //snprintf(my_str, 50,"Result = %f\0", result/4096.0);
+ //snprintf(my_str, 50,"Loops = %i\0", loops);
+
+ //lcd.DisplayStringAt(0, LINE(5), (uint8_t *)my_str, CENTER_MODE);
+
+ // Plot loops,y_coord
+ lcd.DrawHLine(loops,y_coord,1);
+
+}
+
+int main() {
+
+ uint32_t WriteBuffer[BUFFER_SIZE];
+ uint32_t ReadBuffer[BUFFER_SIZE];
+ FMC_SDRAM_CommandTypeDef SDRAMCommandStructure;
+
+ // # of samples
+ idx=0;
+
+ // turn on 100 us interrupt
+ ms_tick.attach_us(onTimingEventTicker,100);
+
+ lcd.Clear(LCD_COLOR_BLUE);
+ lcd.SetBackColor(LCD_COLOR_BLUE);
+ lcd.SetTextColor(LCD_COLOR_WHITE);
+
+ // Issue self-refresh command to SDRAM device
+ SDRAMCommandStructure.CommandMode=FMC_SDRAM_CMD_SELFREFRESH_MODE;
+ SDRAMCommandStructure.CommandTarget=FMC_SDRAM_CMD_TARGET_BANK2;
+ SDRAMCommandStructure.AutoRefreshNumber=1;
+ SDRAMCommandStructure.ModeRegisterDefinition = 0;
+
+ while(1) {
+
+ // Measure 19200 values (1.920 s time)
+ while(idx<19200) {
+ // Wait while the data is collected
+ }
+
+ // Read back data from the SDRAM memory
+ sdram.ReadData(SDRAM_DEVICE_ADDR + WRITE_READ_ADDR + idx, ReadBuffer, BUFFER_SIZE);
+ pc.printf("\nRead data DONE\n");
+
+
+ // Read back data from the SDRAM memory
+// sdram.ReadData(SDRAM_DEVICE_ADDR + WRITE_READ_ADDR, ReadBuffer, BUFFER_SIZE);
+// pc.printf("\nRead data DONE\n");
+
+ // Checking data integrity
+// if (CompareBuffer(WriteBuffer, ReadBuffer, BUFFER_SIZE) != 0)
+// {
+// led1 = !led1;
+// pc.printf("Write/Read buffers are different\n");
+// }
+// else
+// {
+// led1 = !led1;
+// pc.printf("Write/Read buffers are identical\n");
+// }
+
+// wait(1);
+
+ }
+}
+
+/**
+ * @brief Fills buffer with user predefined data.
+ * @param pBuffer: pointer on the buffer to fill
+ * @param BufferLength: size of the buffer to fill
+ * @param Value: first value to fill on the buffer
+ * @retval None
+ */
+void FillBuffer(uint32_t *pBuffer, uint32_t BufferLength, uint32_t Value)
+{
+ uint32_t tmpIndex = 0;
+
+ /* Put in global buffer different values */
+ for (tmpIndex = 0; tmpIndex < BufferLength; tmpIndex++ )
+ {
+ pBuffer[tmpIndex] = tmpIndex + Value;
+ }
+}
+
+/**
+ * @brief Compares two buffers.
+ * @param pBuffer1, pBuffer2: buffers to be compared.
+ * @param BufferLength: buffer's length
+ * @retval 0: pBuffer2 identical to pBuffer1
+ * 1: pBuffer2 differs from pBuffer1
+ */
+uint8_t CompareBuffer(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength)
+{
+ while (BufferLength--)
+ {
+ if (*pBuffer1 != *pBuffer2)
+ {
+ return 1;
+ }
+
+ pBuffer1++;
+ pBuffer2++;
+ }
+
+ return 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Feb 10 20:19:36 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/7130f322cb7e \ No newline at end of file