STM32基于Nucleo板CAN总线的建立

STM32基于Nucleo板CAN总线的建立

ID:43485875

大小:1.01 MB

页数:9页

时间:2019-10-08

STM32基于Nucleo板CAN总线的建立_第1页
STM32基于Nucleo板CAN总线的建立_第2页
STM32基于Nucleo板CAN总线的建立_第3页
STM32基于Nucleo板CAN总线的建立_第4页
STM32基于Nucleo板CAN总线的建立_第5页
资源描述:

《STM32基于Nucleo板CAN总线的建立》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32基于Nucleo板CAN总线的建立前言STM32NUCLEO开发平台是ST最新发布的易用性好、可扩展性佳的低成本平台。开发平台具有mbed功能支持Arduino接口,同时还提供STMorpho扩展排针,可连接微控制器的所有周边外设,可以利用Arduino巨大生态系统优势,便于快速实现STM32学习和评估!这儿我们评估它的CAN外设功能。一、环境搭建1、软件:STM32CubeRepositorySTM32Cube_FW_F1_V1.3.0ProjectsSTM3210E_EVAL

2、ExamplesCANCAN_NetworkingEWARM2、硬件:NUCLEO-F103RB(STM32F103RBT6)3、原理图如下:上面原理图是针对SN65HVD230的,因为PB8是CAN_TX,是MCU端的发送,需要到CANtransfer的输入引脚,即引脚D(Driverinput);因为PB9是CAN_RX,是MCU端的接收,是CANtransfer的输出引脚,即引脚R(Recvoutput);二、Porting由于参考的是STM3210E_EVAL的示例程序,在用到ST

3、M32F103RBT6的Nucleo板子上的时候,需要做一些porting的工作。1、系统时钟在10E的EVAL板子上,使用的是HSE,而Nucelo上默认的是没有焊接HSE,所以使用到的是HIS;利用CubeMX生成代码:系统时钟为36MHz;供给CAN外设的时钟:是APB1的时钟18MHz;voidSystemClock_Config(void){RCC_OscInitTypeDefRCC_OscInitStruct;RCC_ClkInitTypeDefRCC_ClkInitStruct;RC

4、C_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState=RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue=16;RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSI_DIV2;RCC_OscInitStruct.PLL

5、.PLLMUL=RCC_PLL_MUL9;HAL_RCC_OscConfig(&RCC_OscInitStruct);RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK

6、RCC_CLOCKTYPE_SYSCLK

7、RCC_CLOCKTYPE_PCLK1

8、RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivid

9、er=RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_1);HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);HAL_SYSTICK_CLKSourceConfig(SYSTICK

10、_CLKSOURCE_HCLK);/*SysTick_IRQninterruptconfiguration*/HAL_NVIC_SetPriority(SysTick_IRQn,0,0);}2、CAN的接收/发送引脚仍然可以都为PB8(TX)和PB9(RX),不需要改变;3、CAN的波特率(自己想设置的是500K):CanHandle.Init.Mode=CAN_MODE_NORMAL;CanHandle.Init.SJW=CAN_SJW_1TQ;CanHandle.Init.BS1=CAN_BS

11、1_3TQ;//TS1[3:0]+1CanHandle.Init.BS2=CAN_BS2_5TQ;//TS2[2:0]+1CanHandle.Init.Prescaler=4;//BRP[9:0]+1CanHandle.Init.NART=ENABLE;所以,理论上,根据计算公式,NominalBitTime=1×tq+tBS1+tBS2=(TS1[3:0]+1+TS2[2:0]+1+1)*(BRP[9:0]+1)xtPCLK;所以,NominalBitTime=9*4*tPCLK

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。