- 博客(45)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
原创 嵌入式开发中Cache问题的解决方法
我们知道,在ARM架构体系下,一切皆地址。一片512MB的DDR3对应的不过也是一串长度为512M字节的地址
2022-07-04 15:14:51
998
原创 复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言
前一段时间写了不少使用Xilinx的Zynq芯片的文章,说实话在整个开发过程中几乎没有遇到什么疑难杂症。现在国产化进度赶人,进口的芯片只做了个功能验证,马上就要换上国产的。
2022-06-30 16:33:11
16260
11
原创 CAN通信的用户层设计
在汽车电子和工业领域里,经常会使用CAN总线方式来进行通信,CAN总线速率高,采用差分通信方式,因此抗干扰性强,常规走线可达十米以上。那么CAN协议底层有阻塞和唤醒模式,且有冗余校验和错误帧识别,因此可靠性极高。不同于modbus总线使用485作为通信方式,CAN总线没有主从机之分,总线上的设备均可不定时广播消息,主控制器只需根据帧ID接受相应的有用帧而舍弃其他帧。现在越来越多的主控制芯片都会集成1到2个CAN控制器,PLC厂商也会提供CAN拓展模块以支持CAN通信(此处不得不吐槽PLC
2022-05-13 19:02:47
3046
2
原创 使用库函数free( )导致异常错误
我在使用链表的过程中,需要经常使用free( ) 函数来释放启用的结点,这次由于我写程序的失误,在程序运行到free( )函数这里时,直接进DataFault( )错误中断,后来才发现了问题所在。首先free( ) 一般是和malloc函数或calloc函数一块使用的,后两个函数表示从堆空间申请一段连续的地址空间,当使用完毕后,使用free( )函数通知处理器释放掉该地址,也即该地址可以重新分配给别的地址了。我这次的错误是分配空间时给指针分配的空间小了,导致free( )的时候发生了内存泄漏,也就是
2022-05-12 14:49:14
1948
原创 Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解
Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。
2022-04-27 14:46:30
1782
15
原创 Zynq 【SDK裸机开发之PS】——串口接收缓存
最近项目上在使用Zynq开发,也是第一次使用,期间会遇到各种各样的问题,属于Zynq本身问题的我会更新到我的另一篇博客《Zynq开发调试踩坑指南》中,这个版块将会陆续记录我自身在程序开发中的问题。这次的问题是串口收数据问题,众所周知,我在一个月前就已经把串口调通了,收发试着也没啥问题。现在正在加一个通过串口远程升级的功能,也就是发的数据量大了,几十毫秒一帧数据,每一帧都有个一百多字节,然后就发现偶尔收的数据CRC校验对不上,仔细核对发现是少收了一个字节了。我一开始是怀疑收数据的软件层驱动不对。毕竟整
2022-04-26 18:56:26
4103
7
原创 GD32F190T系列单片机外部晶振起振电路损坏
使用GD32F190T8U6, +5V供电。第一次使用。外部晶振8M,在其他项目上用量1K片/年,从未出现过故障。使用外部晶振过程中没有问题,产品老练测试大概一星期,期间没有问题。交付部队半年后(期间不知道有无使用),反馈其中一套产品的can通信异常。拆解后发现运行指示灯闪烁慢了大概四五倍。遂怀疑晶振异常。进入程序查看晶振配置结果,发现配置失败,起振不成功。先改成内部晶振供用户测试。一周后返厂,更换外部晶振,依然不起振,更换单片机,起振成功。后期其他项目使用过同款单片机,使用3.3V供电,目
2022-04-16 20:34:38
1272
原创 关于Xilinx、复旦微 7系列 FPGA “Init_B”引脚的深入探讨
这两年项目上提国产化的越来越非常严格,尤其是今年,军工项目更加特殊,总体单位直接提百分百纯国产化。这百分百国产化器件中,有外资控股的企业不能选,企业家是外籍华人的不能选。像思瑞浦之类的。直接又把百分之八十的国产化企业淘汰了。最近项目上用到了复旦微的FPGA,之前也没有用过复旦微的产品,只知道复旦微的产品大都是正向抄袭的Xilinx,然后就开始踩坑。这次遇到的问题是,一部分板子有大概率问题不能正常加载程序。最后定位问题是DC-DC的3.3V出的非常缓慢,大概20ms左右才能达到3.3V的水平。那这样会
2022-03-31 14:45:19
10703
1
原创 ZYNQ SDK开发调试踩坑指南
坑1:这个坑蹲了一整天,配置PS端的串口只能发数,不能收数,代码翻来覆去折腾一天,最后查到问题原来是bank1的电压选择的不对,我选择的是3.3V,其实硬件接的是1.8V。我也是无语了啊。。原来BANK电压选择这么重要。......
2022-03-28 20:38:36
6476
原创 论STM32强推的HAL库
HAL这个是安卓提出来的概念,芯片公司就是觉得象那么回事就都加上来了,实安卓的HAL是应用层下来的逻辑业务对应硬件的实现中间层,只需要逻辑相关的硬件逻辑,真正的抽取层。而芯片公司觉得大家都是250,写了这么个HAL库觉得要高大上点,实推出来的还是功能开发用的SDK,就是开发包,封装开发接口,没有业务抽取。换个名字还不如象windows那样叫个DDK更明白咋回事。还有,STM32的HAL库一看就知道没有完整的系统设计,代码里到处是模块和接口级的逻辑判断,封装的效率和使用便捷其实极差。每个接口都得查做什么
2021-12-29 14:36:28
554
6
原创 Stm32F4 系列使用DMA发送串口数据
以前在使用stm32F103系列单片机时,若要将串口配置成DMA发送,只需要正确配置DMA通道,然后发送数据时候,给DMA通道的CNDTR寄存器赋以发送长度,再使能DMA即可。如下代码所示:F103版本while (DMA_GetCurrDataCounter(DMA1_Channel7));// 检查DMA发送通道内是否还有数据memcpy(DMASendBuf, Buffer, (ucSend_num > 1024 ? 1024 : ucSend_num));//DMA发送数据-
2021-12-14 22:42:54
5186
2
转载 STM32 TIM1输入捕获配置
最近做一个IRIG-B码对时的项目用到STM32的TIM1输入捕获功能,配置TIM1的输入捕获遇到很多坑,在这里总结下,希望对大家有帮助。 项目中用到的输入引脚为PE13,为TIM1_H3即TIM1的第3通道,这里提醒大家在使用引脚功能时最好查看引脚的重映象表,看是否要开启重映象,功能为捕获高电平脉宽,具体配置如下:1.首先配置GPIO/* GPIO引脚配置 */void R_gpio_init(void) { GPIO_InitTypeDef G...
2021-10-08 19:00:17
2516
1
原创 GD32F190 ADC多通道DMA自动接收踩坑指南
如果条件允许的话,请不要用GD32F1x0系列。。。。-----题记这个系列的芯片官方连个库函数指南都没有你敢信?我都不要求中文版的了,起码英文版的得有吧??以往stm32的ADC工作模式,一般都是配置成多个通道自动连续切换,然后通过DMA把数据读走,这次用上GD32F190Tx芯片后,怀着国产之光的心态认认真真的写代码,看库函数,结果真就是踩坑了。我们习惯stm32的配置方式,都是给一个结构体成员赋值,然后调用xxx_init()函数,把结构体作为参数传入函数。但是,gd32的库函数都
2021-09-27 17:09:33
3092
3
原创 Ultra Librarian导入封装到AD20
1.下载Ultra Librarian软件并安装;2.在各元器件官网下载.bxl文件;3.在Ultra Librarian软件step1中选择Load Data,打开下载的.bxl文件;4.step2中勾选Altium designer,并取消勾选其他选项;5.step3中点击Export to Selected Tools。会自动打开一个以时间命名的.txt文件;6.找到该文件的路径,用Altium designer打开同一目录下的.prjscr文件,并选择运行;7.注意,这一
2021-08-25 09:05:08
2541
原创 Altium Designer原理图导出FPGA管脚的方法
原理图绘制好后,如果需要做DRC检查或者需要写FPGA程序,批量做引脚约束,倒是可以手动输入,但是大项目动辄几百个引脚,一个个手输就得残废。需要完成两个步骤,一是把原理图里的网络信息导出来,二是将网络信息导入到vivado。步骤一:在原理图上选中任一part后右键,选择Part Actions-->Configure Pin Swapping。(这个步骤要求原理图必须是在一个PCB工程下,如果你是一个单独的sch文件,那么就建一个工程把文件拖进去)在弹出的窗口里Ctrl + .
2021-05-15 15:55:08
6626
原创 Xilinx的7系列的SRCC和MRCC
Xilinx的7系列时钟输入有SRCC和MRCC。在手册上有描述,SRCC可用于本时钟区域,MRCC用于本时钟区域和相邻时钟区域。单看这个就有些困惑了,那难不成还连接不到全局时钟了。官方手册中有下面这个图,可以看出SRCC和MRCC都是可以连接到全局时钟的。这个图由于有点具体,不太好理解。看下面这个图,首先MRCC和SRCC都是可以连接到全局时钟的,但是全局时钟的资源有限。如果程序较大都使用全局时钟的话,那时钟资源就不够用了。SRCC可用于本区域时钟这个比较好了解,MRCC用于相邻的区域该这么理解,M
2021-05-15 15:16:40
3400
原创 stm32F407 调试 LAN8720A ping不通问题解决
硬件信息主控:stm32f407VET6PHY芯片:LAN8720A网络变压器:HR91105A 带网口座TCP/IP 协议栈LWIP版图设计PCB制作完成,打样板回来后,发现有几个问题:HR911105A的 4 脚忘了接。。。应该接到VDDE,此处飞线轻松解决; LAN8720A的封装用的不太好,芯片背面的焊盘是用来接地的,这也是该芯片唯一接地的地方,而我把这个焊盘画的有点小了,如图: 然后拿来野火的例程一通试,因为野火的是stm32F407ZET...
2021-04-05 16:08:36
11113
19
原创 RS422芯片在一主多从总线通信中的问题
众所周知,RS422是全双工的总线通讯方式 ,类似于两个485芯片共同使用,这次我使用的美信公司的MAX1482ESD芯片。往常的应用场景一般是一对一通信,没出过什么问题,但这次情况不一样了。这是芯片的功能框图。理论上来说,收发是独立开来的,收发互不影响,但是就这样依然出问题了。我们采用了一主多从的连接方式。①为主机,②③为从机,主机的发连接从机的收,主机的收连接从机的发。我在电路上把三个芯片的RE拉低,DE拉高,这样收发都使能了,只单独开启一个从机,通信没有问题,可是当我开启两台从
2021-03-01 13:46:12
11491
15
原创 stm32 网口 串口模块通信丢帧、死机问题的解决
首先描述问题,是我一同事而非我本人遇到的,公司让我协助他查找问题。客户是卫通地面站,主控电脑使用的是麒麟系统,通过UDP和我们的设备进行网络通信,客户每间隔一秒钟发送一次状态查询指令,一天的时间内会出出现3到5次设备不响应指令的状态,客户判定为丢帧。通过查看客户的通讯日志,发现不响应的时间竟然差不多都是40秒钟以上,40秒后恢复了响应。情况诡异。一开始同事怀疑是网口模块的问题,毕竟客户那里发的比较频繁,有可能说是模块收发的数据太多,导致了硬件异常,模块接收发送失败。还有某研究所的一哥们提醒说他觉得m
2020-09-14 10:23:32
5976
1
原创 VS 调试shell32.dll 程序
用C#做一个音乐播放器的程序,其中用到一个ShellClass类,包含在shell32.dll中,使用的是win10,运行OK,将该程序放在windows 7 中运行时,出现以下错误:Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch5'. This operation failed because the QueryInterface call on the
2020-07-18 13:39:22
1081
原创 HDL为什么要有可综合和不可综合两种代码
Verilog HDL和VHDL相比有很多优点,有C语言基础的话很容易上手。搜集了一些网上大神的经验总结和书上的例子,所以对于和我一样的初学者,这篇博客应该还是很有提高作用的,至于具体语法,任何一本书都讲的很详细。0. HDL历史HDL 是 HardwareDescriptionLanguage 的缩写,中文名“硬件描述语言”,并不是“硬件设计语言(HardwareDescriptionLanguage)”。正是这个单词,决定了绝大多数部分电路设计必须遵循RTL的模式来编写代码,而...
2020-06-27 16:34:45
2151
原创 BGA焊盘如何扇出
第一步:Altium designerPCB设计中打开设置规则,把间距规则改成最小。第二:Altium designer PCb设计中,对BGA扇出的电源引脚线宽大小设置。第三:设计BGA扇出的过孔的大小(0.8的BGA,用的是8/16 mil的孔)。第四步:选择BGA,右击选择扇出。执行上面命令后弹出下面对话框 。执行后BGA扇出步骤就完成。如果上面的A...
2020-04-27 16:16:06
6344
1
原创 FLASH中的BOOT Sectored 和 Uniform Sectored两种类型的区别和联系
前天有一个同事过来问我一个问题,就是他们一直在生产的一个板卡上的一篇镁光的芯片停产了,问我用这系列的另一款替代可不可行,我拿来看了看,这是镁光生产的一片NORFlash芯片,1G停产的是 PC28F00AP30BFA,想象的替代品是PCB28F00AP30EFA,一个是bottom boot ,一个是uniform,查了许多资料,竟都是空白,也有人问,但是答的讳莫如深,后来终于搜索到了一篇......
2020-04-10 13:48:09
1792
原创 关于【野火】OV7725例程移植【OV7670】总结
用了三天的时间,终于搞定了程序的移植。也是第一次移植stm32程序。最终的移植成功版本,改了SCCB通信、FIFO读写时序、寄存器配置、引脚修改的一些地方。一、移植过程中SCCB通信遇到的问题1.由于野火的OV7725摄像头内置上拉电阻,所以在配置时SDA和SDL都被设置成了Mode_OD (开漏模式),但是战舰带的OV7670摄像头并没有内置上拉电阻,所以不能......
2020-04-10 08:38:57
2688
7
原创 Vivado 使用过程中问题总结
在vivado进行一个行为级别仿真时,运行到simulate 步骤时 弹出了如下提示:[USF-XSim-62] 'simulate' step failed with errors. Please check the Tcl console or log files for more information.[Vivado 12-4473] Detected error while r...
2020-03-12 17:11:04
36470
12
转载 在直流电源(Vcc)和地之间并接电容的作用
1,在直流电源(Vcc)和地之间并接电容的电容可称为滤波电容.滤波电容滤除电源的杂波和交流成分,平滑脉动直流电压,储存电能.取值一般100-4700uF.取值与负载电流和对电源的纯净度有关,容量越大越好.有时在大电容傍边会并有一个容量较小的电容,叫高频去耦电容.也是滤波的一种型式用来滤除电源中的高频杂波以免电路产生自激,稳定电路工作状态.取值一般0.1-10uF.取值与滤除杂波的频率有关.这样...
2020-03-11 22:26:44
3048
1
原创 stm32 硬件SPI接收 数据的干扰、丢包的一些感想
最近做一个项目,客户用4Mhz的SPI时钟给我们发数据,一开始还想着用软件模拟SPI接收,结果还是我too young too简单。4Mhz虽然听起来速度不高,但是相当于一个电平持续时间是125ns,用stm32的库函数去读,根本就做不到,光是响应中断就需要十几个指令周期,几十纳秒就出去了,更不用说再读取电平状态去判断了。所以不得不更改电路板,被迫接受使用硬件SPI的命运。因为以前知道st.........
2020-03-07 09:26:50
14229
7
原创 C# winform 中定时器 Timer不能正常操作开启、关闭的问题解决
在线程中,开启定时器timer.Start()时候,无法进入timer_Tick()事件。-------------------------------------------------------------------解决方案:tthis.Invoke(new MethodInvoker(delegate{ timer.Start();}));由于静态类里...
2019-05-30 21:08:15
10186
原创 使用W5500配置UDP双向 收发 通信
最近又使用W5500网络芯片开发了一个新产品。这次的产品主要还是TCP通信,但是在使用过程中遇到了一个问题。如果上位机异常关闭,此时socket可能并不会认为已经断开了连接,因此再次尝试连接该端口的时候会被拒绝。那么解决这个问题想到了两种方法,一是使用心跳,但是心跳是最无力的妥协,破坏程序的结构性,同时也增加不必要的程序开支。第二种方法就是下位机增加一个UDP端口,因为UDP连接不要求...
2019-05-29 23:24:24
6040
1
原创 使用stm32 定时器TIM3 的重映射引脚 捕获正交编码器数据的一些积累
因为我们公司的软件和硬件是分开的,硬件人员在设计电路板的时候,为了布线方便,往往会使用一些引脚的重映射功能。这次使用的单片机是stm32F103ZGT6,使用PB4和PB5捕获正交编码器的数据。因为这两个引脚本身没有定时器,只有在重映射时候才能使用TIM3的ch1和ch2。因此,我使用重映射配置,将这两个引脚配置了以下,这是一开始的代码:GPIO_InitTypeDef......
2019-03-12 15:30:21
9782
2
原创 stm32f103在使用定时器1重映射引脚输出PWM
在使用stm32f103ZGT6单片机输出PWM时候,各种配置都不能正确输出,后来查看手册,PE11该引脚对应的确实是定时器1的通道2,但是属于该引脚的重映射功能,遇到这种情况,需要多加一条语句。RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 ,ENABLE); //TIM1时钟使能 RCC_APB2PeriphClockCm...
2019-03-08 13:12:32
5713
转载 Implementation of Connecting a Socket with Timeout in C#【C# Socket.Connect连接请求超时机制】
From:https://www.codeproject.com/Articles/31514/Implementation-of-Connecting-a-Socket-with-TimeoutIntroductionYou will notice that neither of the two classes, System.Net.Sockets.TcpClient nor Syst...
2019-01-23 17:08:34
531
转载 串口的单线半双工模式(stm32f10x系列)
这两天折腾CTS/RTS硬件流控,看到说232协议的CTS/RTS只是用来做半双工换向使用的。正好手头上有块stm32的板子,看了看stm32的Usart,竟然发现支持的是单线半双工。232里面毕竟4根线,支持半双工也是各自独立地物理信道(大胆猜测,回头回顾一下以前草草使用的双线485,看看它的半双工)。第一次注意到。之所以引起我的兴趣,是因为,我好奇stm32的单线半双工有2点。 第一:有......
2018-12-28 10:48:45
18502
24
原创 PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named 'numpy'
之前安装了Python,后来因为练习使用Python写科学计算的东西,又安装了Anaconda,但是安装Anaconda之后又出现了一个问题,在命令行中编写Python命令调用numpy可以正常使用,但是在PyCharm中调用却会报错No module named 'numpy',也就是找不到numpy,情况如下面所示。在命令行中可以正常使用numpy:但是在PyCharm中不能正常使...
2018-10-25 11:29:39
6127
原创 c#编写Winform窗体分辨率变低
前段时间在开发一个总线舵机调试程序,开发环境是Windows10 64位专业版(V1803)和Visual Stuido 2015专业版,电脑屏幕是15.6英寸分辨率1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在Visual Studio设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给...
2018-08-28 14:48:58
3687
13
Simple_MediePlayer - 副本.rar
2020-07-23
stm32硬件SPI3接收
2020-03-07
stm32 单线收发.zip
2019-06-21
C#编写的USB通信实例(含源码)
2018-04-03
GD32F190T系列单片机外部晶振起振电路损坏
2022-04-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人