Data sample and LCD plot

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG SDRAM_DISCO_F746NG mbed

Files at this revision

API Documentation at this revision

Comitter:
tapiov
Date:
Sat Feb 10 20:19:36 2018 +0000
Child:
1:c3c61d08f31b
Commit message:
First commit

Changed in this revision

BSP_DISCO_F746NG.lib Show annotated file Show diff for this revision Revisions of this file
LCD_DISCO_F746NG.lib Show annotated file Show diff for this revision Revisions of this file
SDRAM_DISCO_F746NG.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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