
Basic can bus example with LCD hint
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Revision 0:6d192735c003, committed 2017-12-31
- 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
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