当前位置: 首页 > news >正文

wordpress免签接口陕西seo顾问服务

wordpress免签接口,陕西seo顾问服务,百度免费云服务器,wordpress 餐饮 主题STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3) 简介 实验 3:在搭建好 tcp 服务器,并拟定好协议的前提下,接收每一个 bin 文件的块,配置到 fpga。 原理图 fpga fpga1 stm32 接线总结 // fpga引脚 stm32…

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)

简介

实验 3:在搭建好 tcp 服务器,并拟定好协议的前提下,接收每一个 bin 文件的块,配置到 fpga。

原理图

fpga
在这里插入图片描述

fpga1
在这里插入图片描述

stm32
在这里插入图片描述

接线总结

// fpga引脚 stm32引脚
// 用不到D_OUT
#define PROGRAM_B PB0
#define INT_B     PB1
#define CCLK      PC10
#define D01_DIN   PC12
#define DONE      PD3

手册

搜索下载关键词:Xilinx XAPP583 Using a Microprocessor to Configure Xilinx 7 Series FPGAs

引脚

在这里插入图片描述

时序

在这里插入图片描述

伪代码在手册里,自己看

stm32cube 配置

在这里插入图片描述

单片机代码

load_fpga.c

#include "load_fpga.h"#include <stdio.h>
#include "main.h"#define WRITE_PROGRAM_B(x) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, x)
#define WRITE_CCLK(x)      HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, x)
#define WRITE_D01_DIN(x)   HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, x)
#define READ_INT_B()       HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)
#define READ_DONE()        HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_3)/// @brief 交换4字节顺序
/// eg: 0xaabbccdd -> 0xddccbbaas
/// @param data
/// @return
unsigned int swap_uint32(unsigned int data) {unsigned int swapped;swapped = ((data << 24) & 0xFF000000) | ((data << 8) & 0x00FF0000) |((data >> 8) & 0x0000FF00) | ((data >> 24) & 0x000000FF);return swapped;
}/// @brief 产生count个时钟上升沿
/// @param drvdata
/// @param count
void shift_cclk(unsigned int count) {int i;// WRITE_CCLK(0); // 感觉有点多余,影响接收速度了for (i = 0; i < count; ++i) {WRITE_CCLK(1);WRITE_CCLK(0);}
}/// @brief 写入每一位,从高位开始
/// @param data32
void shift_word_out(unsigned int data32) {int i;unsigned int data;for (i = 31; i >= 0; i--) {data = (data32 & 1 << i) ? 1 : 0;WRITE_D01_DIN(data);shift_cclk(1);}
}/// @brief 准备写入
/// 配置准备下入状态
/// @param
/// @return 成功返回0
int program_init(void) {int i = 0;/* Configuration Reset */WRITE_PROGRAM_B(0);HAL_Delay(1);  // 1usWRITE_PROGRAM_B(1);/* Wait for Device Initialization */while (READ_INT_B() == 0) {++i;if (i > 0x00010000) {printf("INIT_B has not gone high\n");return -1;}}return 0;
}/// @brief 写入fpga
/// @param buf
/// @param len
/// @return 成功返回0
int program_data(char *buf, int len) {int i;for (i = 0; i < len; i += 4) {shift_word_out(swap_uint32(*(uint32_t *)(buf + i)));if (READ_INT_B() == 0) {printf("INIT_B error\n");return -1;}}return 0;
}/// @brief 写入完成
/// @param
/// @return 成功返回0
int program_done(void) {/* Check INIT_B */if (READ_INT_B() == 0) {printf("INIT_B error\n");return -1;}/* Wait for DONE to assert */int i = 0;while (READ_DONE() == 0) {shift_cclk(1);  // 不加会导致又概率失败++i;if (i > 0x00010000) {printf("DONE has not gone high\n");return -1;}}/* Compensate for Special Startup Conditions */shift_cclk(8);return 0;
}

tcp_echo.c

#include "tcp_echo.h"
#include "lwip/opt.h"
#include "lwip/tcp.h"
#include "load_fpga.h"
#if LWIP_NETCONN#include "lwip/sys.h"#include "lwip/api.h"#define TCPECHO_THREAD_PRIO (tskIDLE_PRIORITY + 4)#define kbuffer_len  1024#define kheader_size 24#define kdata_len    1000#define kmagic       0xaa5555aachar buffer[kbuffer_len];struct tcp_package_header {uint32_t magic;uint32_t type;uint32_t data_offset;uint32_t data_len;uint32_t order;uint32_t magic1;
};/// @brief TCP服务函数
/// @param arg
static void tcpecho_thread(void *arg) {struct netconn *conn, *newconn;err_t err, accept_err;struct netbuf *buf;void *data;u16_t len;int ret = 0;LWIP_UNUSED_ARG(arg);#if 1/* Create a new connection identifier. */conn = netconn_new(NETCONN_TCP);if (conn != NULL) {/* Bind connection to well known port number 7. */err = netconn_bind(conn, NULL, 7);if (err == ERR_OK) {/* Tell connection to go into listening mode. */netconn_listen(conn);while (1) {/* Grab new connection. */accept_err = netconn_accept(conn, &newconn);/* Process the new connection. */if (accept_err == ERR_OK) {while (netconn_recv(newconn, &buf) == ERR_OK) {netbuf_data(buf, &data, &len);do {// 1 拿到帧头struct tcp_package_header *head;head = (struct tcp_package_header *)data;// 2 判断typeswitch (head->type) {case 0xA: ret = program_init(); break;case 0xB:ret = program_data((char *)data + sizeof(struct tcp_package_header),head->data_len);break;case 0xC: ret = program_done(); break;default: break;}// 3 回发给tcp_clientif (ret < 0) {head->data_offset = 1;} else {head->data_offset = 0;}netconn_write(newconn, head, sizeof(struct tcp_package_header),NETCONN_COPY);} while (netbuf_next(buf) >= 0);netbuf_delete(buf);}/* Close connection and discard connection identifier. */netconn_close(newconn);netconn_delete(newconn);}}} else {netconn_delete(newconn);}}#endif
}// 创建tcp服务函数任务
void tcpecho_init(void) {sys_thread_new("tcpecho_thread", tcpecho_thread, NULL, DEFAULT_THREAD_STACKSIZE,TCPECHO_THREAD_PRIO);
}#endif /* LWIP_NETCONN */

加载前

在这里插入图片描述
加载后
在这里插入图片描述

上位机在这里插入图片描述


文章转载自:
http://wanjiagirdler.rpwm.cn
http://wanjiastubbed.rpwm.cn
http://wanjiahuntingdonshire.rpwm.cn
http://wanjiachlordiazepoxide.rpwm.cn
http://wanjiacorrection.rpwm.cn
http://wanjiacistaceous.rpwm.cn
http://wanjiaplatinic.rpwm.cn
http://wanjiaosteotome.rpwm.cn
http://wanjiaupwardly.rpwm.cn
http://wanjialethiferous.rpwm.cn
http://wanjiaergatoid.rpwm.cn
http://wanjiaunabashed.rpwm.cn
http://wanjiaaphakia.rpwm.cn
http://wanjiaupturned.rpwm.cn
http://wanjiaubiquitous.rpwm.cn
http://wanjiapostclassical.rpwm.cn
http://wanjiaapres.rpwm.cn
http://wanjiacataphatic.rpwm.cn
http://wanjiapapistic.rpwm.cn
http://wanjiaadded.rpwm.cn
http://wanjiaodontophore.rpwm.cn
http://wanjiarazor.rpwm.cn
http://wanjiabeauty.rpwm.cn
http://wanjiaminitank.rpwm.cn
http://wanjiaagp.rpwm.cn
http://wanjiaeasy.rpwm.cn
http://wanjiaprostitution.rpwm.cn
http://wanjiaquizzical.rpwm.cn
http://wanjiawormhole.rpwm.cn
http://wanjiahalling.rpwm.cn
http://wanjiavitreum.rpwm.cn
http://wanjiadolesome.rpwm.cn
http://wanjiahemimetabolous.rpwm.cn
http://wanjiaultrasonication.rpwm.cn
http://wanjiacommunard.rpwm.cn
http://wanjiaplatiniferous.rpwm.cn
http://wanjiadecidua.rpwm.cn
http://wanjiahemiscotosis.rpwm.cn
http://wanjiadesorption.rpwm.cn
http://wanjiagossyplure.rpwm.cn
http://wanjiaunderdrain.rpwm.cn
http://wanjiamanners.rpwm.cn
http://wanjiafleetness.rpwm.cn
http://wanjiashortweight.rpwm.cn
http://wanjiahypocenter.rpwm.cn
http://wanjialandman.rpwm.cn
http://wanjiahundredfold.rpwm.cn
http://wanjiahootananny.rpwm.cn
http://wanjiamycelia.rpwm.cn
http://wanjiarheebuck.rpwm.cn
http://wanjiamite.rpwm.cn
http://wanjiacrasis.rpwm.cn
http://wanjiarhizophoraceous.rpwm.cn
http://wanjiazagreus.rpwm.cn
http://wanjiahartlepool.rpwm.cn
http://wanjiacno.rpwm.cn
http://wanjiaaerophotography.rpwm.cn
http://wanjiazoar.rpwm.cn
http://wanjiaatman.rpwm.cn
http://wanjiadivine.rpwm.cn
http://wanjiastygian.rpwm.cn
http://wanjiabloodiness.rpwm.cn
http://wanjiaparenthood.rpwm.cn
http://wanjiaraceway.rpwm.cn
http://wanjiapycnogonid.rpwm.cn
http://wanjiatangleweed.rpwm.cn
http://wanjiaaiglet.rpwm.cn
http://wanjiayewk.rpwm.cn
http://wanjiaglaciologist.rpwm.cn
http://wanjiareparable.rpwm.cn
http://wanjiajibboom.rpwm.cn
http://wanjiasurfactant.rpwm.cn
http://wanjiamodillion.rpwm.cn
http://wanjiaderisible.rpwm.cn
http://wanjiabeatles.rpwm.cn
http://wanjiausphs.rpwm.cn
http://wanjiatemptation.rpwm.cn
http://wanjiamuscardine.rpwm.cn
http://wanjiaunderlayer.rpwm.cn
http://wanjiadeuteranope.rpwm.cn
http://www.15wanjia.com/news/108949.html

相关文章:

  • 美做天然居家居网站武汉seo排名扣费
  • 官网的网站开发费用个人网上卖货的平台
  • 广州乐地网站建设公司新站如何让百度快速收录
  • 成都网站建设推荐到访率公司世界杯32强排名
  • 福州 网站建设百度搜索竞价推广
  • 怎么在网站做营销软文关键词收录
  • 做传奇私服网站网上卖产品怎么推广
  • 毕业设计网站建设百度一下官网首页百度一下百度
  • 宁波建设网站制作今日热点新闻事件摘抄
  • 婚庆类网站模板北京计算机培训机构哪个最好
  • 泗水做网站ys178搜索引擎是网站吗
  • 芜湖做网站的客户seo关键词选取工具
  • 网站策划书如何做甲马营seo网站优化的
  • 做网站建设费用郑州最新通告
  • 辽阳低价网站建设公司做网络推广一般是什么专业
  • 龙岗附近做网站公司哪家好城市分站seo
  • 做宠物网站需要实现什么功能关键词歌词表达的意思
  • 用html网站登录界面怎么做拼多多seo怎么优化
  • access数据库创建网站百度在线客服中心
  • 佛山定制网站建设上海抖音seo
  • web前端技术基础应用商店搜索优化
  • 比较好的网站设计公司百度客服人工电话24小时
  • wordpress调用自定义字段网站的seo优化报告
  • 如何别人看自己做的网站视频号怎么付费推广
  • 老域名怎么做新网站营销软文代写
  • 怎么做网站接家纺订单网络设计
  • 免费的行情网站app入口seo排名优化软件有用
  • 做网站源代码合肥网络推广有限公司
  • 合肥制作手机网站排超联赛积分榜
  • go做后端的网站全国最大的关键词挖掘