- 博客(36)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 VSCODE使用记录
③配置好后,查看发现还是能搜索到,在搜索点击2,看3是否禁用,没有调用settings.json。④也可以通过下面截图,在4工作区,5中添加(全不项目都设置直接在用户3中的5添加)②选择1,出现settings.json文件 ,把需要屏蔽搜索的文件配置里面。1、文件或文件夹显示与搜索(一个工程,不是全局的)
2024-10-14 18:29:36
425
原创 VHDL实现IEEE802.3中的CRC32算法
按上面逻辑使用VHDL计算CRC32,步骤1结果只要16个,直接case语句分别计数,每种结果各个bit值固定,那么除了CRC值不确定,其他计数参数都固定,可以按步骤2-3把其余参数都计算出来,直接写入,VHDL不用完全把上面逻辑写入代码中。上面是生成CRC-8的计数代码,CRC32计算需要32位,代码太多了!2、将亦或后的CRC右移1位,再判断4bit异或操作后bit0状态,为1把CRC与多项式进行亦或计算。MII接口4数据线,一个时钟周期发送4个比特,计数CRC32直接按4bit计算。
2024-08-30 15:08:08
1468
原创 2M E1接口原理
每个时隙在 E1 帧中占 8bit , 8*8k=64k ,即一条 E1 中含有 32 个 64K。AIS告警:当输入/输出信号在连续的2帧周期(512位)中的0bit少于2时,判断AIS告警。一个 E1 的帧长为 256 个 bit, 分为 32 个时隙,一个时隙为 8 个 bit。每秒有 8k 个 E1 的帧通过接口,即 8K*256=2048kbps。②当连续三次接收到不包含帧对齐信号的帧的时隙0的第2位错误时。16个帧组成1个复帧(16*256)①当连续接收到三个错误的帧对齐信号时。
2024-05-15 15:36:13
301
原创 GOWIN软件使用
JTAG设置成普通管脚,下载程序时候JTAGEN管脚需要上拉高电平(可以在下载器线上上拉个电阻,下载后把下载线拔走,否则JTAG管脚无法使用,管脚充裕最好不使用JTAG)下载Access Mode选择默认是SRAM,这下载是程序立即被启用,设备重启这程序会失效,主要测试时候使用。有重启操作程序下载到Flash中。根据自己需求把复用管脚勾选上,管脚当普通管脚使用。
2024-03-07 14:15:13
1037
原创 赖迪思软件 lattice Diamond
工程编译好后,git上传,变更分支又切换回来,再次编译有时候失败,所以配置好的管脚变成默认的,生成的IP核变成名变粗(顶部文件,管脚配置显示IP核输入输出信号配置)。双击IP核重新生成下,有时编译又正常,但有时始终编译不过去。解决:直接把顶部文件设置好,再编译。
2024-03-02 17:33:09
715
1
原创 紫光同创初使用
4、有些复用管脚被使用,但是出现异常(输出指示灯显示错误) ,需要查询手册看信号是否使用专用管脚,可以在上图找到对应专用功能,设置为General IO通用管脚。5、与其他芯片连接时候,如果有异常(与交换机芯片GMII管脚连接),可以试试把芯片管脚上下拉配置与连接芯片需求(或默认)上下拉一致。3、程序中有些信号被软件认为是时钟信号,会报错(时钟输入I0约束在非专用时钟管脚上),编译不过去,右击报错会出现解决方案,右击3位置,选择下载(一定要在flash字体右击,否则下载后重启无效)
2024-02-23 17:56:58
1211
原创 VHLD开发遇到问题
原因:RAM_RX_RADD在fsmc_NWE上升沿与fsmc_NOE下降沿都赋值,编译会报错。fsmc接口,读地址累计失败。
2024-01-31 10:22:31
395
原创 STM32与FPGA实现以太网功能--web、UDP、tcp测试
原因:发现有一个设备正常,另一个设备通过TFTP下发web网页偶尔正常。打印排查下,发现读网页大小不对(估计用W25Q16弄的文件系统哪里bug,记录下,等以后处理)原因:浏览器下发命令,STM32上传web数据帧,网页数据比较大,有10K以上,需要发送10帧以上数据,STM32与FPGA数据传输效率不行,浏览器输入192.168.1.30,能出现登入界面,但是输入密码点击没反应,果然没有一帆风顺的。web网管实现,udp、tcp通讯应该没问题,这监控数据通信,频率很低,数据很少。
2024-01-30 18:54:29
941
原创 STM32与FPGA实现以太网功能--ping
设备启动时候会发送2-3次ARP数据,后来就不发送数据了,但是仿真发现low_level_input有数据接收,搞了几天一直不知道哪里出问题,后来只接收发送给192.168.1.30(设备IP地址)的ARP包,其他过滤掉,low_level_output正常应答发送了(具体原因没找到?修改方案:FPGA接收网络数据,把业务数据过滤出来,其他网络帧保存在RAM中,通过中断通知STM32获取数据,实现网络ARP、 ICMP、tcp、udp等功能(FPAG模拟DM9000功能,很没把握,但目前只想到这种方案)
2024-01-29 15:34:12
1448
原创 KEIL5编辑STC单片机程序
3、 下载C51的芯片包(直接安装能编译stc芯片的keil软件,安装后直接把安装目录中的C51拷贝过来),放在keil_v5目录下面。5、打开老已有工程需要确保C51路径正确,否则编译报错。1、keil5软件正常安装完成。2、打开STC-ISP软件。
2024-01-17 09:53:02
1590
原创 STM32传输FPGA业务
方法:FIFO_TX无数据,输出默认未知值,那么在程序启动时候先往FIFO_TX写入足够TTL_TX发送1~2ms的数据,STM32读写FPGA任务优先级调高,接收到FIFO_RX快满中断读写时间误差在1~2ms以内,那么TTL_TX发送的数据一定是TTL_RX接收的数据。原因:STM32读FPGA过程中,FIFO_RX中数据剩余1023个,快满标志清零了,但FIFO_RX刚好这时候又采集到TTL_RX数据,恢复到1024个,再次触发快满标志,造成STM32读2*1000数据。④FIFO_RX出现满标志。
2023-12-29 14:45:21
1687
原创 protobuf序列化与反序列化
区分 Protobuf 中缺失值和默认值 - 知乎做个项目,参数保存使用protobuf协议序列化后写到flash,读出后反序列化赋值。// <! 参数1message Param1_t{ int32 age = 1; // <! 日龄 int32 weight = 2 [default = 100]; // <! 体重}message Param2_t{ int32 age = 1; //
2022-03-29 16:16:16
1172
原创 STM32项目更换芯片类型
STM32CubeMX创建的工程项目芯片更改:1.打开STM32CubeMX软件。2.选择需要使用的芯片类型。3.导入以前项目的工程。4.按需求更改管脚和时钟等。5.点击生成工程代码(工程名称和路径要一样)。6.把生成的xx.ioc复制出来替换原来项目的.ioc文件。7.双击打开xx.ioc,芯片更改完成。注意:1.管脚命名最好与原项目一致,更改效率更高。2.步骤3不需求导入,也可以按新原理图定义功能和管脚...
2021-01-13 17:02:50
7634
2
原创 RT-Thread学习1-tcp_modbus
RT-Thread Studio实现以太网modbus功能:1.创建芯片对应工程,STM32F407VGT6,这个网络很多。2.添加文件stm32f4xx_hal_msp.c
2020-11-20 10:14:56
1913
原创 protobuf安装与生成.c和.h文件
protobuf的安装protoc的源码和各个系统的预编译包:https://github.com/protocolbuffers/protobuf/releases1、选择对应的安装文件下载2、添加到环境变量中安装完成!protobuf的使用方法1、基本用法protoc --version #查看protoc的版本2.新建文件test2.protosyntax = "proto2";message testinfo { required .
2020-10-12 16:04:27
1868
原创 STM32 FATFS写中文到.csv文件中
工具:KEIL5芯片:STM32F407 使用fatfs在SD卡创建.csv文件,程序中定义一个中文字符串,把字符串写到文件中出现一堆乱码。keil5编码选择GB2312或UTF-8\ANSI模式都不行,仿真看到一个中文占用3个字节。 后来把定义字符串的.c文件用Notepad++软件打开,在编码菜单选择ANSI编码,把中文字符串改好,再在KEIL5中编译,仿真发现一个中文占用2个字节,写到.csv文件正常...
2020-08-27 12:02:10
2573
原创 LWIP tcp服务器,网线不断插拔,服务器不断重连,最后连不上甚至死机
STM32芯片,tcp服务器,网线连接时候,客户端不断重连可以正常稳定连接。但是在客户端不断重连时候,网线不断断开重连,最后客户端连不上,甚至程序直接死机。通过仿真发现err_t tcp_server_accept(void *arg, struct tcp_pcb *pcb, err_t err),客户端申请连接pcb = NULL,也就是说没有空余的pcb给重连客户端使用,直接仿真tcp_active_pcbs信息发现,pcb->state =FIN_WAIT_1 ||FI...
2020-06-15 09:57:48
6443
2
原创 STM32 复位(非重加电)数据不丢失
1.STM32启动过程硬件复位后,第一步是执行复位处理程序,这个程序的入口在启动代码里(默认),摘录一段cortex-m3的复位处理入口代码::1: Reset_Handler PROC ;PROC等同于FUNCTION,表示一个函数的开始,与ENDP相对? 2:EXPORT Reset_Handler [WEAK] 3:4: IMPORT SystemInit5: IMPORT __main6: LDR R0, =SystemInit7: BLX R08: LDR...
2020-06-13 15:44:22
2884
原创 STM32 IAP升级跳转后死机,APP程序无法运行
最近做TFTP远程升级,能正常下载文件,但是跳转后死机,无法启动,需要重加电才行,不知道原因。后来一步步排查发现,每次升级需要写芯片FLASH,然后直接跳转到APP。解决方法:在写FLASH后,软件复位HAL_NVIC_SystemReset(); 然后再跳转到APP。...
2020-04-29 18:04:46
6521
1
原创 LWIP接收发送数据时间间隔设置
用硬石开发板例程改个TCP通信程序,发现接收数据很慢,间隔达到250ms,很大上位机下发的命令都无法快速响应:#define TCP_TMR_INTERVAL 1//250 /* The TCP timer interval in milliseconds. */原来是250,改成1,这样1ms接收回调一次...
2019-10-25 11:49:37
7033
13
原创 keil模拟仿真有符号整数比较
signed short ls;void fun(signed short rs){ short a; if(ls<0){ a =1; } else{ a =2; }}void main(){ fun(ls);}一次开模拟仿真,类似函数过程,进入函数fun中后把rs设置成-30,结果a=2,搞不明白?...
2019-07-02 08:35:15
592
原创 strlen sizeof strcpy函数使用
int strlen(const char *str){ assert(str != NULL); int len = 0; while((*str++) != '/0') len++; return len;}strlen求字符串长度不包含结束符char * strcpy(char *dst,const char *src) { ...
2019-05-15 17:05:49
208
原创 MD5使用C语言实现
MD5.H文件#ifndef MD5_H#define MD5_H typedef struct{ unsigned int count[2]; unsigned int state[4]; unsigned char buffer[64]; }MD5_CTX; #define F(x,y,z)...
2019-05-15 16:23:30
1278
1
转载 C当中关于sizeof(struct)和sizeof(union)
一般32位机子上各个数据类型所占的存储空间如下:char:8位short:16位int:32位long:32位float:32位double:64位一、接下来先来看struct,结构体请牢记以下3条原则:(在没有#pragma pack宏的情况下)1、数据成员对齐规则:结构体(struct)的数据成员,第一个数据成员放在offset为0的地方,之后的每个数据成员...
2019-03-20 13:55:28
206
原创 STM32指针使用
CALCBILL_DATA_ST是个结构体占地址10个uint8 txbuf1[10]={1,2,3,4,5,6,7,8,9,10};uint8 txbuf2[10]={11,12,13,14,15,16,17,18,19,20};uint8 *pbuf1 = txbuf1;CALCBILL_DATA_ST*pbuf2 = txbuf2;如此pbuf1和pbuf2分别...
2019-03-01 09:42:41
6613
原创 使用STM32芯片ID作为MAC地址
STM32每个系列都会有唯一的一个芯片序列号(96位bit): STM32F10X 的地址是 0x1FFFF7E8 STM32F20X 的地址是 0x1FFF7A10 STM32F30X 的地址是 0x1FFFF7AC STM32F40X 的地址是 0x1FF...
2018-12-29 09:48:49
6718
原创 Keil函数指针调用带参数的函数
void Init_WifiModule(ETH_PARAM_T *Para){ RAK415_ParaConfig(BACK_COM,Para);}void Init_NetInterFunc(NET_DATA_INTER *pNet,uint8 Type){ pNet->Init = Init_WifiModule; }typedef...
2018-08-01 14:22:49
2669
原创 共用体与结构体空间规则
typedef union{ uint16 word; uint8 byte[2]; struct { uint16 res0: 1; //0 uint16 res1: 1; //1 uint16 res2: 1; //2 uint16 res3: 1; //3 uint16 res4[4]...
2018-07-23 10:21:03
812
原创 CAN过滤器
CAN ID值0x1800f001用二进制表示为:0b 0001 1000 0000 0000 1111 0000 0000 0001,用括号分别区别为:0b 000[1 1000 0000 00][00 1111 0000 0000 0001],红色部分为扩展ID,蓝色部分为基本ID。注意ID右移3位对齐...
2018-06-23 17:29:35
398
转载 VB2010客服端程序
Imports System.NetImports System.Net.SocketsImports System.TextImports System.ThreadingPublic Class frmClient '客户端Socket Dim cliSocket As Socket '连接状态 Dim IsConnected As Boolean = False ...
2018-05-09 16:45:55
278
转载 VB2010网络通信服务器
Imports System.NetImports System.Net.SocketsImports System.ThreadingImports System.TextImports System.DiagnosticsPublic Class frmServer '服务端的Socket Dim listener As Socket '与客户端会话的Socket Di...
2018-05-09 16:44:41
517
原创 VB2010的线程与跨线程调用控件
1.调用系统线程库 Imports System.Threading2.Dim myThread As Thread '定义线程 Public Delegate Sub VoidDelegate() '定义委托类型3.初始化线程并运行 myThread = New Thread(AddressOf Listen) myThrea...
2018-05-08 17:42:11
1735
原创 变量的地址空间
int a=0x12345678;char b[4]={0,1,2,3};memcpy(b,&a,4);//由a低地址的数据给b的低地址数据b[0]=0x78 b[1]=0x56 b[2]=0x34 b[3]=0x12可以看出,int变量低位数据存在4个字节地址空间的低地址位memcpy(&a,b,4);a=0x12340100数......
2018-05-05 17:39:33
468
原创 VB2010的串口能正常接收数据,但无法发送数值大于127的数据
发送大于127的数据,接收回来却是00或0x3f,直接通过STM32发送0XFF这些大于127的数据,接收正常,确定是发送不了大于127的数据,在网上查了很久终于有结果,SerialPort1.Write(sendDATA, 0, k),sendDATA是只能发送ASCII值0-127,超出范围就会被0或3F代替(不知道对不对,我串口接收是这样的)我用的是VB2010,在串口初始化时候加上:Me....
2018-04-11 10:03:32
1313
原创 STM32时钟初始化
void RCC_Configuration(void){ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) ...
2018-04-03 10:53:24
1209
原创 STM32的CAN总线初始化
void CAN_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; /* CAN register init */ // CAN_DeIn...
2018-04-03 09:22:07
4903
Segger.zip
2019-09-29
STM32F401RET6 IAP无法启动
2020-10-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人