Basic can bus example with LCD hint

Dependencies:   BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed

Files at this revision

API Documentation at this revision

Comitter:
tamirci
Date:
Sun Dec 31 21:49:17 2017 +0000
Commit message:
Initial Release; LED lights on during transmission however TTL level signals are not captured correctly

Changed in this revision

BSP_DISCO_F429ZI.lib Show annotated file Show diff for this revision Revisions of this file
LCD_DISCO_F429ZI.lib Show annotated file Show diff for this revision Revisions of this file
TS_DISCO_F429ZI.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
readme.txt Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 6d192735c003 BSP_DISCO_F429ZI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BSP_DISCO_F429ZI.lib	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/ST/code/BSP_DISCO_F429ZI/#2371382139dd
diff -r 000000000000 -r 6d192735c003 LCD_DISCO_F429ZI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD_DISCO_F429ZI.lib	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/ST/code/LCD_DISCO_F429ZI/#dc55a068bc1a
diff -r 000000000000 -r 6d192735c003 TS_DISCO_F429ZI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TS_DISCO_F429ZI.lib	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/ST/code/TS_DISCO_F429ZI/#4f8b6df8e235
diff -r 000000000000 -r 6d192735c003 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,50 @@
+/******************************************************
+ * by tamirci::156103010::ST
+ * STM32F429I-DISCO Board Can Bus Example 
+ * 
+ * CAN1_RX -> PD_0,  CAN1_TX -> PD_1
+ * LED1    -> PG_13, LED2    -> PG14
+ * 
+ ******************************************************/
+#include "mbed.h"
+#include "TS_DISCO_F429ZI.h"
+#include "LCD_DISCO_F429ZI.h"
+
+Ticker ticker;              //  timer object for periodic transmission
+DigitalOut led1(LED1);      //  GPIO object for LED indication of can tx event
+DigitalOut led2(LED2);      //  GPIO object for LED indication of can rx event
+CAN can1(PD_0, PD_1);       //  CAN tranmit object::ttl level waves can be captured  
+LCD_DISCO_F429ZI lcd;       //  Just to be sure demo application firmware is running
+
+char counter = 0;           //  the value that will be transmitted
+
+void send() {
+    printf("send()\n");
+    if(can1.write(CANMessage(1337, &counter, 1))) {
+        printf("wloop()\n");
+        counter++;
+        printf("Message sent: %d\n", counter);
+    } 
+    led1 = !led1;
+}
+ 
+int main() {
+    
+    CANMessage msg;
+    BSP_LCD_SetFont(&Font20);
+    lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"CAN BUS", CENTER_MODE);
+    lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"EXAMPLE", CENTER_MODE);
+    lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"156103010", CENTER_MODE);
+    lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"ST", CENTER_MODE);
+    wait(1);
+    printf("main()\n");
+    ticker.attach(&send,1);        // send can message over CAN1_TX
+    while(1) {
+        printf("loop()\n");
+        if(can1.read(msg)) {
+            printf("Message received: %d\n", msg.data[0]);
+            led2 = !led2;
+        } 
+        wait(0.2);
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 6d192735c003 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/7130f322cb7e
\ No newline at end of file
diff -r 000000000000 -r 6d192735c003 readme.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.txt	Sun Dec 31 21:49:17 2017 +0000
@@ -0,0 +1,157 @@
+
+BSP_DISCO_F429ZI (library)
+
+#include "stm32f429i_discovery.h"
+#include  "stm32f429i_discovery_lcd.h"
+
+
+/**
+  * @brief  System Clock Configuration
+  *         The system Clock is configured as follow : 
+  *            System Clock source            = PLL (HSE)
+  *            SYSCLK(Hz)                     = 180000000
+  *            HCLK(Hz)                       = 180000000
+  *            AHB Prescaler                  = 1
+  *            APB1 Prescaler                 = 4
+  *            APB2 Prescaler                 = 2
+  *            HSE Frequency(Hz)              = 8000000
+  *            PLL_M                          = 8
+  *            PLL_N                          = 360
+  *            PLL_P                          = 2
+  *            PLL_Q                          = 7
+  *            VDD(V)                         = 3.3
+  *            Main regulator output voltage  = Scale1 mode
+  *            Flash Latency(WS)              = 5
+  * @param  None
+  * @retval None
+  */
+
+static void Error_Handler(void)
+{
+  while(1) {}
+}
+
+static void SystemClock_Config(void)
+{
+  RCC_ClkInitTypeDef RCC_ClkInitStruct;
+  RCC_OscInitTypeDef RCC_OscInitStruct;
+
+  /* Enable Power Control clock */
+  __PWR_CLK_ENABLE();
+  
+  /* The voltage scaling allows optimizing the power consumption when the device is 
+     clocked below the maximum system frequency, to update the voltage scaling value 
+     regarding system frequency refer to product datasheet.  */
+  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+  
+  /* Enable HSE Oscillator and activate PLL with HSE as source */
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+  RCC_OscInitStruct.PLL.PLLM = 8;
+  RCC_OscInitStruct.PLL.PLLN = 360;
+  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+  RCC_OscInitStruct.PLL.PLLQ = 7;
+  if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+  {
+    /* Initialization Error */
+    Error_Handler();
+  }
+  
+  if(HAL_PWREx_ActivateOverDrive() != HAL_OK)
+  {
+    /* Initialization Error */
+    Error_Handler();
+  }
+  
+  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 
+     clocks dividers */
+  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;  
+  if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
+  {
+    /* Initialization Error */
+    Error_Handler();
+  }
+}
+
+
+void Delaimes(int Count) {
+  short int i;
+  for(;Count>0;Count--)
+    {for(i=0;i<0x4fff;i++);
+     }
+}
+
+*/
+
+
+
+
+   HAL_Init();
+    
+    SystemClock_Config();   // SYSclk=180MHz
+   
+    BSP_LCD_Init();
+    BSP_LCD_LayerDefaultInit(LCD_FOREGROUND_LAYER, (LCD_FRAME_BUFFER + BUFFER_OFFSET));
+    BSP_LCD_SetTransparency(LCD_BACKGROUND_LAYER, 0);
+    BSP_LCD_SelectLayer(LCD_FOREGROUND_LAYER);
+    Delaimes(4);
+    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
+    BSP_LCD_Clear(LCD_COLOR_BLACK );
+    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
+    Delaimes(4); 
+    BSP_LCD_DisplayOn();
+    BSP_LCD_DisplayStringAtLine(0,buf);
+    Delaimes(4);
+    
+gpiod->alternate=GPIO_AF9_CAN1;
+
+GPIO_InitTypeDef gpiod;      // 
+   HAL_Init();
+    
+    gpiod.Pin = GPIO_PIN_0; gpiod.Mode = GPIO_MODE_AF_PP; 
+    gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; 
+    gpiod.Alternate = GPIO_AF9_CAN1; 
+    
+    HAL_GPIO_Init(GPIOD, &gpiod);
+
+    gpiod.Pin = GPIO_PIN_1; gpiod.Mode = GPIO_MODE_AF_PP; 
+    gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; 
+    gpiod.Alternate = GPIO_AF9_CAN1;   
+  
+    HAL_GPIO_Init(GPIOD, &gpiod);
+    
+    
+        HAL_Init();
+  
+
+    __GPIOD_CLK_ENABLE();
+    gpiod.Pin = GPIO_PIN_0; gpiod.Mode = GPIO_MODE_AF_PP; 
+    gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; 
+    gpiod.Alternate = GPIO_AF9_CAN1; 
+    HAL_GPIO_Init(GPIOD, &gpiod);
+    gpiod.Pin = GPIO_PIN_1; gpiod.Mode = GPIO_MODE_AF_PP; 
+    gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; 
+    gpiod.Alternate = GPIO_AF9_CAN1;   
+    HAL_GPIO_Init(GPIOD, &gpiod);
+    
+    
+    canint.Init.Prescaler=1;
+    canint.Init.Mode=CAN_MODE_LOOPBACK;
+    canint.Init.SJW=3;
+    canint.Init.BS1=5;
+    canint.Init.BS2=10;
+    canint.Init.TTCM=DISABLE;
+    canint.Init.ABOM=DISABLE;
+    canint.Init.AWUM=DISABLE;
+    canint.Init.NART=DISABLE;
+    canint.Init.RFLM=DISABLE;
+    canint.Init.TXFP=DISABLE;
+    
+    
+    HAL_CAN_Init(&canint);
\ No newline at end of file