SWM320系列应用

、Swm320系列 SPI 应用  

现象:应用SWM320的SPI1的模式0作为从机,整体产品硬件平台同步上电,从机的SPI无法正常工作,进不了中断,手工复位一次或连接SWD调试就正常了,这样的情况应该怎么解决?其它定时器运行是正常的。
分析及解决:
1、SWM320从机没有准备好,就做好初始化工作。客户反馈不存在,因为整体平台,linux作为主机,SWM320为从机,linux启动需要几十秒,SWM320启动速度快。 此分析不成立。
2、建议客户通过Linux平台一个GPIO来复位SWM320,客户测试也不能完全避开。
3、建议客户用jlink commander查看SPI1的寄存器,“mem 32 0x4002d000,5”,读出值为“4002D000 = 00000079 000000F7 00008E2F 0000010C”,查看到有FIFO溢出。建议开启溢出OVF中断,进行溢出清空一下FIFO和FIFO溢出中断标志。如下:
开溢出中断使能:
SPI_INTRXOverflowEn(SPI1);

溢出后清除FIFO和中断标志:
void SPI1_Handler(void)
{
   if(SPI_INTRXOverflowStat(SPI1))
  {
     SPI1->CTRL |= SPI_CTRL_RFCLR_Msk;
     __NOP();__NOP();__NOP();__NOP();
     SPI1->CTRL &= ~SPI_CTRL_RFCLR_Msk;

     SPI_INTRXOverflowClr(SPI1);
   }
}

4、开启OVF中断后,可以进入SPI 中断,和SPI RX中断,解决SPI不能进中断的情况。
5、客户反馈可以进中断,不过会发生数据移位现象。
评估:关于数据移位,猜测有两种可能:
1)、SPI从机初始化过程中主机发送了数据,或者主机没发但CS、CLK浮空出现电平跳变,,这种可以通过给CS或CLK添加外部上拉,或者开启内部上拉解决。需要注意的是,,SWM320上有些引脚没上拉,,有下拉,,如果SPI1用的这种引脚的话,,开启下拉也行  
2)、主机通过SPI发送数据时,CS拉低后延时一下再发送数据,,数据发送完了延时一下在拉高CS,,不要立即拉高/拉低CS,,给从机一定的准备时间   
3)、有遗漏的话可能是主机发的太快,,从机处理不过来。有错位的话,,可能是从机还没初始化完,,主机就开发发数据,,这样等从机初始化完开始接收的时候,,可能正好是字节的中间位置,,这样后面的数据就全都错位了。
另外,由于客户还开启应用了TXEmptyIEn中断,导致一上电就进入了SPI中断。因为TX FIFO里是空的,肯定要进中断往TX FIFO里装数据;RX FIFO接收到4个数据后进中断,,在中断里读走数据。TX FIFO是发送空了进中断,,在中断里往TX FIFO里装上数据。


SWM320系列系统时钟应用

2.1、外部晶振应用切换
现象:客户欣联达,应用SWM320VET7-50,自己的设计硬件调试平台,应用GPIO例程工程,采用内部RC可以正常运行,采用外部晶振不能正常。程序跑不起来,运行到switchCLK_XTAL(void)函数的过程中就卡死的现象。 (时间:2021.04.16)
分析:同步跟踪,用SWM320VET7最小系统板(1号板) 和 SWM320VET7+SRAM+并行flash 最小系统板(2号板)进行测试。
1号板 1.1)、用杜邦线连接SWD接口,用GPIO例程,
1.2)、采用内部RC时钟源程序可以正常运行;
1.3)、切换外部晶振不能正常运行,
1.4)、进行二次程序下载,连接SWD有问题,提示找不到内核;
1.5)、采用ISP擦除芯片 1.6)、可以重现连接SWD,识别芯片
2号板2.1)、用标准SWD线连接SWD接口,用GPIO例程,
2.2)、采用内部RC时钟源程序可以正常运行;
2.3)、切换外部晶振也可以正常运行
再测1号板 3.1)、再用标准SWD线连接SWD接口,用GPIO例程,
3.2)、采用内部RC时钟源程序可以正常运行;
3.3)、切换外部晶振也可以正常运行。现象比较奇怪。
后来客户反馈,在switchCLK_XTAL(void)函数中,通过以下处理后,外部晶振可以正常应用。

2.2、用外部晶振倍频值120Mhz时的处理
现象:客户均测,采用SWM320RET7和SWM320CET7发现一个问题, 都是外接8M晶振49SMD的, 晶振正常应该接两个电容15pF, 但是发现48PIN的IC接上电容正常,不接不正常, 而64PIN的芯片不接正常, 接上就不行。使用外部晶振经过PLL倍频120Mhz。     
分析解决:有两种改法,
1)、简单改法,,SystemInit()前调用Flash_Param_at_120MHz();就行了
2)、复杂改法,,把库里的SWM320_flash.c、SWM320_flash.h、system_SWM320.c这三个文件替换成新版的库文件
同时,客户应用外部晶振8Mhz,请客户检查一下几项
a)、#define __HSE (8000000UL)
b)、#define SYS_PLL_SRC SYS_CLK_XTAL
#define PLL_IN_DIV 2
#define PLL_FB_DIV 60
#define PLL_OUT_DIV PLL_OUT_DIV8
如果VCO频率只有240MHz,240MHz太低了,VCO频率要在600MHz--900MHz之间。
              VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
 
2.3、SWM320系列外部晶振应用   
现象:客户遇到部分板子,用外部晶振起振,在低温下无法正常起振工作的情况。
分析评估:根据排查目前猜测是芯片外部晶振引脚的容性负载有问题,建议客户修改负载电容的容值。
解决:把晶振的负载电容加上10pf,解决低温不启动的问题。
2.4、外部晶振不起振问题         
现      象:[1]客户安视睿(SWM32S)反馈32S使用外部晶振无法起振,程序无法正常运行,查看时钟配置没有问题,使用内部晶振程序可以正常运行。
分析与解决:程序配置为外部晶振时无法正常运行,debug仿真通常停在 while(SYS->PLLLOCK == 0); 中,此时使用内部晶振时程序运行正常,此时建议客户排查外部晶振,安视睿贴的外部晶振有问题,更换晶振后可以正常起振,程序正常运行。



SWM320系列IO端口应用

3.1、灌大于10mA电流导致MCU不断重启
现象:客户这边反映单片机不断重启。  
分析:经过排查除去BOD和FLASH擦写的问题,通过分析客户的硬件原理图,发现客户实际应用中,某个IO口拉低会导致33mA的灌电流产生,而320单一IO口的电流阈值是10mA,客户更换大阻值的电阻后即可避免复位问题。
3.2、SWM320系列的GPIO端口特点
注意:SWM320 GPIO引脚不支持开漏输出,个别引脚只支持上拉或支持下拉,如下:
PORTA/PORTC/PORTM/PORTP/PORTN0~PORTN2 支持上拉功能
PORTB/PORTN3~PORTN19 支持下拉功能
3.3、SWM320系列引脚功能端口
注意:SWM320系列的引脚功能分FUN0/FUN1,分别对应GPIOx的偶数号引脚和奇数号引脚,FUN0/FUN1对应功能详情看数据手册。 A12/B12/N18/N19 无 FUNx 配置功能。
3.4、SWM320系列引脚功能端口
注意:SWD端口设置为GPIO端口,直接用PORT_Init设置应该就行。   



SWM320系列的ADC阻抗

4.1、注意:SWM320的ADC阻抗在100K~200K左右,ADC引脚测量的电阻大小最好在10K以下。
4.2、SWM320系列ADC初始化问题         
现      象:有客户使用SWM320CE对ADC1的多路通道分别初始化(重复初始化),导致程序卡死,利用Demo板可以复现该现象。
分析及解决:查看客户代码发现其ADC重复初始化导致程序卡死,参考Lib库中的SimplADC对其进行初始化,即对各个通道进行“按位或”运算,而非多次调用ADC_Init( )。


SWM320系列ISP应用

6.1、板级设计中ISP引脚的处理
注意:板级设计必须留出ISP引脚,防止调试过程中芯片锁死后或不正常工作后,SWD不能访问,可以通过ISP擦除恢复状态。
6.2、SWM320系列的ISP方式应用
注意:ISP引脚为B0,VCC,GND是UART-RX、UART-TX 下载引脚。
SWM320RET7/SWM320VET7 是UART-RX -- >A2, UART-TX -- >A3;
SWM32SRET6是UART-RX -- >C2, UART-TX -- >C3;
SWM320CET7是UART-RX -- >A0, UART-TX -- >A1

SWM320系列的外设SRAM、SDRAM应用
注意:SWM320系列外置SRAM支持8、16、32bit访问读写。   
SWM320系列,包括SWM32SRET6,外设SDRAM只支持32bit访问读写。


SWM320系列的DMA应用

注意:SWM320系列的DMA功能不支持外设I2C、UART、SPI和ADC,只支持SDRAM,SRAM,NORFLASH之间的访问应用。


SWM320系列的串口应用

8.1、注意:SWM320系列波特率的UART分频寄存器只能存整数,所以当分频值小数部分相对于整数部分比较大的时候,舍去的小数部分就会引入一定的累积的误差。
波特率误差计算公式:主频/16/115200 ;如果小数位仅仅是0~2,误差较小。小数位是大于0~2,特别是大于5,由于没有分频寄存器没有四舍五入,所以会产生误差或累计误差。
8.2、SWM320串口 加上拉应用  
现象:客户应用串口会不断进入中断的问题。
分析:怀疑是RX悬空,导致RX线上出现超过11/13bit的低电平信号就会触发中断。
解决:把RX的IO进行上拉即可解决问题。
8.3、SWM320串口应用导致的程序慢现象
现象:分析之前客户反复提到我们的程序处理慢,现场分析了客户认为执行慢的代码段,发现该代码处只是大 数组赋值而已,但是和其他品牌M3,M4相比执行速度慢,因为客户在该代码段做了IO翻转处理,来看检测执行时间。我们芯片的执行时间确实长一些,经过排查,发现还是频繁进入串口中断导致的,因为客户DMX512协议用的是250K的波特率,最快4us会进入中断一次,而DMX512有88us以上低电平做Break信号。由于SWM320系列的UART的LIN模块有硬件bug,250K波特率下一旦超过64us低电平,就会每4us进入中断一次。导致程序很多时候在拼命进入中断然后退出中断,牺牲执行效率。也是因为这个硬件BUG导致客户没办法移植现成的判断第9bit的方式来实现DMX512协议的数据接收
关于UART波特率的BAUD初值计算,可参照“CAN_UART_波特率&PLL时钟计算_20220325.xlsx”。


SWM320系列CAN应用

注意:SWM320系列 CAN仅支持1个32位滤波器/2个16位滤波器。
CAN模块的通讯速度不能太低 120M情况下 CAN最低要跑37.5K。
SWM320为3.3V供电,CAN 收发器的应用要做电平匹配,或应用3.3V供电的收发器。
CAN功能模块初始化参数的设置,可参照“CAN_UART_波特率&PLL时钟计算_20220325.xlsx”。

SWM320系列的FLASH应用
10.1、注意:内部FLASH必须以4K为单位擦除,写入地址必须能被0x1000整除。
在SWM32SRET6驱动TFTLCD应用中,如有对FLASH进行操作,需要将FLASH的操作定位在SRAM中进行。 具体操作方法参照 “SWM320擦写Flash过程中LCD闪烁解决方法.docx” 。


10.2、SWM320系列片内 Flash 的数据异常     

现     象: 客户汇生采,使用SWM32SRET6试产阶段,反馈有十几台样机在反复烧录过程中出现下载后校验失败,这其中个别烧录成功的也运行异常,表现为不断复位,经初步检查为下载烧录至MCU片内的程序 与 源程序Bin文件数据不一致,对比出几个字节的数据差异。

分析及解决:问题定位为2019年之前的标准外设驱动库存在该缺陷,MCU上电进行系统时钟初始化时没有设置写入对片内Flash的读等待参数,导致访问片内Flash的数据出错,而实际存储在片内Flash上的数据并没有发生物理电气上的位翻转(Bit Flip)现象。

注意:对于320早期量产客户,如遇上述Flash数据异常等情况,请先检查客户程序所使用的标准外设驱动库版本是否过旧,并尝试更新Lib后观察是否可解决问题。

十一SWM320系列RTC模块

注意:SWM320 RTC没有独立供电引脚,RTC掉电后数据不保持。此类RTC功能,可以作为不掉电定时功能, 且对时间要求不高的产品中,如类似风扇类产品定时、电磁炉类产品定时器功能

十二SWM32SRET6驱动TFTLCD应用
可参阅 “SWM32SRET6-50 驱动TFT-LCD应用笔记20220224.pdf”
12.1、Hbp\Hfp\Vbp\Vfp参数设定值局限性
现象:客户伟邦,调试640*480的TFTLCD应用。显示方面会有抖动,边缘有黑边。 (时间:2021.04.25)
分析:由于客户应用TFTLCD的HBP为134,VFP为32,如下。已经超出SWM32S的最大参数设置128和8,不能满足TFTLCD的参数需求。

客户通过增加水平分辨率的点数到656,通过此方式来增补HBP参数的不足,抖动的现象有所改善,有轻微抖动,客户认为可以接受。

SWM320系列的Hbp\Hfp\Vbp\Vfp 设置值范围不够,需要在后续的TFTLCD驱动芯片设计中进行优化改善。 另外也可以考虑升级版的型号封装,与SWM32SRET6进行pin to pin 的技术设计。
12.2、驱动800x480,出现白屏现象  
现象:客户应用驱动800*480的TFTLCD,有机器在0℃或常温下启动出现白屏现象。客户提供了两台机器,反馈两台机器都会有白屏现象。  (时间:2021.5.29)
分析解决:根据客户提供的两台机器,分别为1号机、2号机。1号机和2号机的硬件有些差异,1号机采用12V ---(DCDC) 5V ---(LDO) 3.3V;  2号机采用12V ---(DCDC)3.3V。 1号机常温下通电测试,第一次上电可以正常显示,再次上电白屏,后续上电都白屏。2号机正常,在常温下和0℃、-15℃环境下分别工作1小时都正常,在0℃、-15℃环境下断电放置10分钟后,再连续启动10次,都可以正常工作显示,触摸可以操作。
分析1号机器,客户的应用有Userboot 和 APP,APP有针对FLASH读等待时间,但是Userboot code的应用中没有执行此动作,1号机更新Userboot添加FLASH读等待时间后,在0℃和-15℃环境下测试长运行和通断电,都可以正常进行。  而2号机器,在测试过程中一直未有出现此现象,评估是由于芯片内部Flash的兼容差异性的原因。 要求APP和USERBOOT要保持统一的基础库文件应用。   
另外,在分析此现象过程中, 同时了解客户是否有在主程序的应用中多处调用 LCD_Handler()? 因为除了初始化调用LCD_Handler()后,在程序中的LCD_Handler 有对LCD_STAR()的调用,如果在程序中也有调用 LCD_STAR()则形成调用嵌套,也同样会出现白屏现象,即LCDC模块无输出的情况。需要注意此点应用。
 
12.3、SWM32SRET6-50 驱动3.96’@480*800  TFTLCD 显示有拉丝现象  --2021.6.29
现象:客户采用竖屏,COG芯片为ILI9806,可以设置为竖屏横用。客户在驱动应用中,出现水平和垂直方向显示不全的现象,后调整ILI9806的初始化参数,SWM32SRET6的 驱屏参数,可以全屏显示。但在刷屏的时候出现如下面短片中的拉丝现象,已截图

 

    

图3.13.2 拉丝现象
分析解决:调整SWM32SRET6 的dev_rgblcd.c文件中void lcd_rgb_init(void)函数中此参数设置,LCD_initStruct.SamplEdge = LCD_SAMPLEDGE_FALL。
将 LCD_SAMPLEDGE_FALL改为 LCD_SAMPLEDGE_RISE。问题得到解决。

12.4、SWM32S 驱动800x480拖尾现象 (摘自陈任明跟进记录 2021-08-29) --2021.09.09
现象: 客户应用32S驱动800X480有紫色拖尾现象,如下图。
分析&解决:协助客户一起分析,是由于RGB线走错了。

        


12.5、SWM32SRET6 驱动TFTLCD 进行2000v的脉冲群测试

现象:有客户在进行2000V的脉冲群测试时,出现显示闪花屏现象
分析解决:定位被干扰的部分在SDRAM
1、建议通过贴屏蔽纸的方式判断被干扰的部分,无效果。
2、在SDRAM的CKE、CLK引脚上串接22Ω的电阻后进行测试,没有出现闪花屏的现象。
建议驱屏的硬件设计中,TFT-LCD的总线预留串接33Ω的电阻。如有外接SDRAM的应用,则通讯端口CKE、CLK预留串接33Ω 电阻
12.6、图片转换工具应用  
现象:如下图红色箭头所示,图片不能正常显示,校对过SD-TF卡 与程序中的文件名是一致的。

分析解决:图片转换工具对于一些图片的命名是有要求,如果用“-,+”开头的文件转换出来的数据是不对的


十三SWM320系列复位脚应用

现象:客户遇到SWM320上电无法芯片正常起来的情况
分析解决:同步协调排查,客户RST电路使用的是2.2uF,需要换成100nF/1uF,问题解决。

十四SWM320中断优先级应用
注意:SWM320 的中断优先级,采用Cortex-M的中断优先级设置函数 NVIC_SetPriority(IRQn_Type IRQn, u int32_t priority), 优先级别 是 0~7,0的级别最高,默认都是0。 中断号参照下图中 SWM320.h 文件中的中断号排列。   --2021.7.8
如果有同时有两个中断发送, 按下图的序号来进行相应处理。


十五SWM320看门狗应用

注意:客户反映看门狗的复位之间不是很准,经过研发确认这是BUG。设置500ms的定时器复位,看门狗会在1s复位。  


十六SWM320功耗应用

现象:客户用320CE的功耗降不下来,协助调试客户硬件平台。
分析&解决:
1)、硬件并没有真正的把负载全部去掉,导致测试会误判。
2)、320开PLL后再进入睡眠时,PLL并不会自动关闭,而会继续耗电,需手动关掉。处理后整机功耗调到1.6ma。 (仍达不到客户的需求。)  


十七SWM32S硬件应用注意点

注意:
1、无法烧录程序,常见的是电源短路引起供电不正常。另外,SWM32S的LDO_CAP脚对地接1uF的电容虚焊导致。
2、背光没有升压,有两种情况导致。第一种是升压芯片使能脚有电压而无法升压,排查后发现反馈电阻虚焊导致,也有些是升压芯片坏导致无法升压; 第二种是使能脚无电压,而芯片对应的该控制脚有输出,排查发现串联的限流电阻有虚焊。
3、显示正常,但通过电流计观察电流明显偏大,用万用表测量5V—GND短路,观察板子并没有连焊,后推测是有芯片内部短路,排查后发现是升压芯片内部短路。
  (摘自梁国旺周报记录。  2021-09-05) --2021.09.09

十八SWM320 支持SD卡版本要求
注意:SD卡功能模块不能支持识别SD卡2.0以下版本。

十九SWM32S的烧录应用

19.1、SWM32SRET6烧录慢           --Lianggw    2023-6-24
现 象:瑞德反馈烧录32S芯片慢,正常情况5S烧录完成,有个别需要25S才能烧录完成,用的是芯园的一拖2烧录器搭配客户自己做的烧录Socket座。
分析与解决:去客户现场察看烧录器与烧录情况,测试发现新的芯片在第一次烧录的情况下烧录都是5S烧录完成,重复烧录的情况下就要25S才能烧录完成,察看Socket座发现无任何电容以及晶振,推测可能是重复烧录的时候由于内部已经有程序,但无晶振以及CAP电容导致程序卡在某个地方,所以才需要25S才能烧录完成,之后给Socket座加上晶振后无论第几次烧录,时间都是5S。

二十SWM32SCRC应用
20.1、SWM320/SWM341硬件CRC支持的多项式种类有限    --2023-8-17    linzh
现      象: 客户使用SWM32SRET6时反馈CRC16硬件校验与网页在线计算器验算结果不一致,查看网页在线计算公式中的多项式是8005,SWM320的CRC16仅支持1021多项式,SWM341的CRC16则支持1021、8005多项式。

分析及解决:如通讯协议层/发送端的CRC配置设定允许变更,则更换为MCU支持的参数模型即可,否则需要抛弃使用硬件CRC,改用软件CRC来实现数据校验目的。

注意:应用以下各参数字段时请参照MCU规格书的描述进行匹配。


二十一堆栈的应用

21.1、内存越界引起的数据被篡改      
现象:客户赋值大数组时,发现数组内的数据都被篡改了,我这边复现的时候移植没出现,即使把数组定位到指定的地址。
分析与解决:后来客户比较程序发现,客户堆栈是分配在64KB,导致内存越界了。但是编译器没有报错,后面客户强行把堆栈地址指定后,问题解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值