云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > sp3485调试总结

sp3485调试总结

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 1:37:39

TM32调试sp3485技术总结 举报本内容

1.首先说明一下本人这次使用的STM32芯片是STM32F103RB,使用的资源是片内的USART1。

2.下面是我的电路连接图:

做一下简单的说明:

(1)PA8是sp3485的发送/接收使能端,sp3485只能支持半双工的通信,所以这个引脚就是来控制这个芯片到底是收数据还是发数据的。

(2)在有些电路连接中,sp3485的A和B端会一个被连接一个上拉电阻到3.3V,另一个会连接一个下拉电阻到GND,这样做的目的是当本sp3485不参与通信时不会影响网络的稳定性。 3.本次调试方式

PC机——USB转232转换头——RS232/RS485双向转换头——sp3485——STM32,因为是第一次调试sp3485芯片,所以当然没有太大意,先拿电脑调试,调试通了再看板子和板子之间的通信了。 4.本次试验的代码: main函数: int main(void) {

/* Configure the system clocks */

RCC_Configuration();

/* NVIC Configuration */ NVIC_Configuration(); /* Configure the GPIOs */ GPIO_Configuration();

/* Configure the USART1 */ USART_Configuration();

GPIO_SetBits(GPIOA, GPIO_Pin_8); //PA8是sp3485发送/接收控制端,这里先设置为发送(实现的功能就是上电之后STM32先向PC发送一个4和一个3) delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧

USART_ClearFlag(USART1,USART_FLAG_TC);//这一句很关键,如果没有这一句这个4会发送不成功或者发送错误的,

//其实手册上讲了使能发送位后会发送一个无用的帧,所以那个帧发送完了这个

//发送完成的标志位USART_FLAG_TC当然也被置位了。

USART_SendData(USART1, 4);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//上面清除了发送完成标志位,那么这里就可以等待发送完成标志位被置位来判断这一帧是否发完了 USART_SendData(USART1, 3);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); while(1) {

GPIO_ResetBits(GPIOA, GPIO_Pin_8);//现在把PA8清零,试试接收PC机发送过来的数据

delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧

USART_ClearFlag(USART1,USART_FLAG_RXNE);//既然上面开始发送之前都将发送完成标志位清零,这里也将接收完成标志位清下零,就当是一个好习惯吧 while(1) {

if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)//判断是否有一帧数据接收完成 {

buf[j++] = USART_ReceiveData(USART1); //接收完成的话就直接放到缓存区域里 }

if(10 == j)//接收完成10个之后就跳出去,不再接收了,有个意思就OK了 break; }

j = 0;//清零一下j变量,使得实验可以反复接收PC发过来的10个数据 GPIO_SetBits(GPIOA, GPIO_Pin_8);//将sp3485设置为发送数据 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧 for(i = 0; i < 10; i++) {

USART_SendData(USART1, buf[i]);//将数据依次发送出去

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); } } }

RCC设置函数:

void RCC_Configuration(void) {

/* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */

RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */

HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) {

/* HCLK = SYSCLK */

RCC_HCLKConfig(RCC_SYSCLK_Div1);

/* PCLK2 = HCLK */

RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */

RCC_PCLK1Config(RCC_HCLK_Div2); /* Flash 2 wait state */

FLASH_SetLatency(FLASH_Latency_2); /* Enable Prefetch Buffer */

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* PLLCLK = 8MHz * 9 = 72 MHz */

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

/* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { }

/* Select PLL as system clock source */

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x08) { } }

/* Enable USART1 and GPIOA clock */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE); }

GPIO设置函数:

void GPIO_Configuration(void) {

GPIO_InitTypeDef GPIO_InitStructure;

/* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure PC. as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO_Mode_Out_PP = 0x10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

搜索更多关于: sp3485调试总结 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

TM32调试sp3485技术总结 举报本内容 1.首先说明一下本人这次使用的STM32芯片是STM32F103RB,使用的资源是片内的USART1。 2.下面是我的电路连接图: 做一下简单的说明: (1)PA8是sp3485的发送/接收使能端,sp3485只能支持半双工的通信,所以这个引脚就是来控制这个芯片到底是收数据还是发数据的。 (2)在有些电路连接中,sp3485的A和B端会一个被连接一个上拉电阻到3.3V,另一个会连接一个下拉电阻到GND,这样做的目的是当本sp3485不参与通信时不会影响网络的稳定性。 3.本次调试方式 PC机——USB转232转换头——RS232/RS485双向转换头——sp3485——STM32,因为是第一次调试sp3485

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com