一、SWM190系列IO端口应用
1.1、SWM19SCBT6 B0端口引起的漏电流
SWM19S的IAP升级必须上拉B0,但B0会漏电,B0接高对方不止需要改版还会增加大概50ua的功耗。由于芯片内置的ROMCode默认B0脚切下拉。所以说接高电平会漏电。 在APP应用中,测试了直接关掉B0下拉后整个板子功耗稳定。
1.2、SWM190系列的IO口单一引脚的电流、位带功能
注意:SWM90的IO口 单一引脚的拉电流和灌电流是12mA,超过该电流会引起复位。
SWM190系列B0,A2,A3,C0,C1会漏电。如果不用这五个脚进浅睡眠190功耗是50uA,如果使用了这五个脚 中的其中一个,或者是接高。就会导致功耗上升到90uA。 漏电是因为这五个脚在ROMCode中开启了下拉,导致如果使用就会漏电。目前基于最小系统板测发现关闭下拉就不会再漏电。但并没有单独用芯片测试过。
SWM190 GPIO支持位带功能,原子级操作GPIO,不会被ISR打断。
1.3、SWM190系列的功能引脚
注意:SWM190系列的引脚复用的功能是固定的。
SWM190系列中,SWM19S引出PORTB PIN0~15,可以用于模拟8080时序
1.4、SWM190系列的PB端口的操作应用
现象:客户使用19S,需要用到一次性操作PB0~PB7,但是PB0~PB7不能在翻转过程中不能插入拉低的工作,就是不能加入 GPIOB->ODR &= ~(0xFF);
分析&解决:为确保PB8~PB15的IO状态不能改变,不能轻易使用GPIOB->ODR = ,可以先读取PB组的状态,然后在处理低8位数据的方式操作,后面就把操作改成了GPIOB->ODR= ((GPIOB->IDR) & 0xFF00 )| (uint16_t)Data;Data取值保证在0x00~0xFF即可。
1.5、关于CAN模块
注意:SWM190系列 没有CAN功能模块。
1.6、SWD端口做为GPIO 应用时,需进行如下切换
正常切换 SWD端口为GPIO口。如下:
*((volatile uint32_t *)0x40000190) = 0;//切换SWD端口必须加上,未在固件库中开放给用户
设置对应SWD端口为GPIO。
如要恢复SWD端口功能:
*((volatile uint32_t *)0x40000190) = 1;//切换SWD端口必须加上,未在固件库中开放给用户
设置对应SWD端口
二、SWM190系列ISP功能应用
2.1、板级设计中ISP引脚的处理
注意:板级设计必须留出ISP引脚,防止调试过程中芯片锁死后或不正常工作后,SWD不能访问,可以通过ISP擦除恢复状态。
如果产品开发过程中有应用Userboot功能,ISP功能将失效,只能通过SWD方式进行程序的擦写。所以,在调试过程中,初始化完成系统时钟后,预留5s以上的延时,以免在Userboot程序 或 APP程序调试过程中,锁死SWD导致无法连接下载烧写的情况。因为,上电时SWD功能对应的IO端口默认为SWD功能。
另外,Userboot功能应用中,ISP端口必须外接上拉。
预留5S的原因,这里主要是在调试过程中使用。就是在应用中如不小先将 SWD 端口切换重置其它端口应用时,就没有办法再用SWD端口进行link 连接。 而芯片上电时的默认状态 SWD 功能, 所以加上5S 的延时 是为了在5S 延时之前,SWD 端口保留 默认状态时 还可以进行SWD 的link连接。
2.2、SWM190系列的ISP方式应用
注意:ISP引脚为B0,VCC,GND是UART-RX、UART-TX 下载引脚。
SWM19SCBT6的UART-RX - - > E5,UART-RX - - > E7。
其它型号UART-RX - - > A0,UART-RX - - > A1
三、SWM190系列的DMA应用
3.1、SWM190系列,外设支持DMA。支持SPI、UART、ADC、内部FLASH到SRAM.
3.2、现象: SWM19S在使用串口出现过2卡死和DMA搬运卡死的现象,经过跟踪发现,主要问题是图片显示的DMA发送是通过DMA轮询实现的,串口2的中断会打断DMA轮询,导致DMA传输过程中少传输一个数据,会导致DMA传输标志位没变化,卡死在while循环
SWM19SCBT6驱动MPU I80 LCD 显示,刷图出现死循环现象。应用DMA 以1bit 方式搬运SpiFlash数据进行刷屏显示,同时应用了串口2--62500bps。刷图应用5~8分钟不等 出现DMA搬运数据一直不能进入完成状态的中断,即程序函数“SPI_FLASH_LCDFastRead_1Bit” 中 “ while (spi_dma_finish == 0) //等待 DMA 搬运完成 ”一直在等待DMA搬运完成的判断,程序陷入死循环。
分析:跟踪分析,发现不开启串口2中断,刷图没有问题,即DMA可以完成数据搬运的过程。初步判读串口2与DMA搬运之间有冲突。 SAE协助分析,建议采用 “SimplUART_Interrupt_TXDone” 方式,在例程工程中同步客户应用功能,和客户同步测试,虽有所改善,但时间长后同样会出现“程序陷入死循环”现象。 明显建议在 “SPI_FLASH_LCDFastRead_1Bit” 函数中 要先打开接收DMA通道,再打开发送DMA通道,即:
“ //先接收再发送,避免数据遗漏
DMA->CH[DMA_CH1].CR |= (1 << DMA_CR_RXEN_Pos); //开启接收通道
DMA->CH[DMA_CH0].CR |= (1 << DMA_CR_RXEN_Pos); //开启发送通道 ”
同时,在“DMA_Handler” 函数 中
“ SPI_PORT_W25X->CTRL &= ~(1 << SPI_CTRL_DMATXEN_Pos);
SPI_PORT_W25X->CTRL &= ~(1 << SPI_CTRL_DMARXEN_Pos); ”
提供以上处理方式给客户同步进行测试,暂没有出现死循环现象。 客户应用中又需再添加串口1---38400bps 中断,客户端测试还是出现有死循环现象。 按客户的应用,例程中再添加串口1--38400bps中断,进行测试没有出现死循环现象。林泽浩协助分析客户的程序,发现客户的程序中还是 要先打开发送DMA通道,再打开接收DMA通道,告知客户进行修正后老化测试,未再出现死循环的现象。
注意: DMA 通道搬运SpiFlash数据的应用,要先开DMA接收通道,再打开DMA发送通道,避免数据的遗漏 出现DMA搬运数据数量 与 设置中的数量不一样(当应用中,没有多种中断功能应用时,可能不会出现数据遗漏,应用功能复杂后,如客户应用了2路串口中断,可能就出现数据的遗漏的情况。) , 引起DMA 搬运数据一直在等待数量的完整性 的现象。 同时,在DMA完成搬运数据后,要释放通过DMA写FIFO的控制。
四、SWM190系列的串口应用
4.1、注意:SWM190系列串口波特率的计数器增加了小数部分计算的寄存器,波特率的准确率有提高。
4.2、UART TxDone中断 –2021.5.25
现象:客户反映SWM190 发送中断TXDOIF有异常,字节没发送完的过程中,中断就发生了。影响客户在RS485上的功能实现。
分析&解决:测试后发现这是SWM19S的硬件BUG,测试SWM190 UART TXDone中断,经测试当数据还有一个字节未发送时TXDone中断就会触发。目前让客户应用中,在TXDone中断后用软件或硬件延时一会儿,等UART发送完。或者可以触发TXDone之后,设置一个定时器,让定时器1个字节时间后发生中断。
五、SWM190系列的FLASH操作
5.1、擦写注意:内部FLASH必须以4K为单位擦除,写入地址必须能被0x1000整除。
5.2、上电复位现象:SWM190上电复位后不能正常工作。
分析&解决:由于SWM190的Flash ROM是叠封Flash,如果上电复位缓慢,芯片会无法正常启动Flash,看到的现象是芯片没有正常运行。实际上是因为未能从内部Flash正常读取程序导致的。
有两种解决办法:1)、修改软件,即启动文件中Qual命令参数表,改为普通单线SPI通讯,这样通讯正常,但会加长程序读取时间。 2)、修改硬件,调整复位电路或加复位芯片,加快上电的复位时间,保证芯片供电稳定在2.49V以上,这样190和叠封的FLASH同时上电,就不会存在问题。
5.3、反馈19S擦除FLASH偶尔会出问题,擦除和读取之前加上cache_reset问题解决。 (摘杨顺仁跟进记录 2021-10-18)
六、SWM190系列的ADC应用
6.1、注意:SWM190系列 带两路ADC,SWM19SCBT6型号仅支持一路ADC。
SWM190的12bit ADC阻抗在近似无穷大
6.2、SWM19SCBT6 ADC触发模式应用
现象:SWM19S ADC触发模式切换的问题,森威这边需要ADC可以分别做 “外部信号触发+DMA传输” 和 “软件触发+轮询” 两种方式来回切换。为了解决这个问题,目前切换成软件触发只能用ADC连续模式采样,才能避免采样值有偏差的问题,但是连续采样无法等待到EOC标志置1。 该问题复现后,尝试用取消DMA搬运使能和DMA FIFO使能,软件触发的连续采样依旧无法等待到EOC标志置位1。
解决:绕过SW软件触发 连续触发EOC无法置位的问题,使用单次模式软件触发ADC采样,并且采样前先把ADC的FIFO读空,避免出通道串数据的现象。而且客户测试过程中发现会有可能会导致ADC无法外部脉冲触发采样,后续客户用NVIC_SystemReset()无法解决,由于NVIC复位仅仅复位内核,需要把对应模块复位才能工作正常。
6.3、ADC采集应用,多次初始化产生的问题
现 象:使用SWM19SCB过程中,ADC的采样存在超时现象,未收到转换完成标志。
分析解决:排查过程中,发现代码在ADC采集的逻辑上,存在风险,因为每次采集某个通道,主逻辑会调用ADC的硬件初始化函数,并配置通道,然后进行软件触发采集,并等待采集完成然后返回值给到主逻辑,而同时存在一个定时器中断的一个逻辑中,也做了ADC采集,且通道号与主逻辑的不同;也就是存在两个不同线程,对ADC模块进行配置通道后采集数据;最后把中断逻辑的采集功能屏蔽后,问题解决;
七、SWM190系列的时钟、睡眠功能应用
7.1、注意:SWM190系列支持RTC,但不支持外部给RTC供电。
SWM90系列的主频最高是60Mhz,可以超频,设计余量是64Mhz。过高的超频,不能保证稳定性问题和一致性问题,而且超频后电流上升,有明显温升。
7.2、SWM190系列SLEEP功能应用 (摘自刘智创 支持记录22.01.12)
SLEEP功能需要切换到内部RC时钟,同时需要关闭PLL。
八、SWM190系列看门狗失效的现象
8.1、看门狗喂养周期
现象:在应用过程中,喂狗动作在进行,但是程序被卡死。客户反馈例程工程中的喂狗是在WDT中断中进行的动作,但是常规程序已卡死,没有起到看门狗的作用。
分析:
注意:两次喂看门狗之间的时间间隔需要长2个WDT时钟周期。如:WDT时钟为32Khz,每个时钟周期30us,两个时钟周期即60us。
8.2、SWM19SCBT7的WDT复位异常
现 象: 在使用SWM19SCBT7 的WDT 复位异常,重复进入 WDT_Init 设置超时阈值时,如果当前计数器值越过期望设置的阈值,将触发此问题。
分析及解决:编写测试程序可复现异常现象,伪代码如下:WDT_Init(rst_period_1)/Start -> delay -> WDT_Init(rst_period_2)/Start -> while (1);,调小rst_period_1与rst_period_2可减弱/避免此现象的发生,定位问题点来自于 WDT Init 设置 rst_period 时触发,在设置 rst_period 前加入喂狗语句即可解决。
注意:对于19S的WDT驱动库而言,已在2023/7/11日更新解决此问题,如有客户复现此现象,可更新标准外设库版本以解决;而对于SWM全系列的 WDT 驱动库,不排除也有此问题,如遇现象与此问题类似,可参照本事项解决。
九、SWM190系列的SPI应用
9.1、读写Spi-Flash 外设
注意:SWM190系列SPI支持2分频,支持半双工30MHz,四线SPI仅支持读FLASH
9.2、SWM19SCBT6 驱动XMC SpiFlash
现象: SPI FLASH clk的时序兼容问题,客户更换华邦FLASH测试出来的结果是,华邦的flash没有问题,XMC的flash有问题,XMC的flash clk引脚手摸或触碰都不行。并且和客户的测试现场做了反复对照。与客户测试的重复上电无关,与clk引脚有关,目前的处理是上拉10K电阻,和对地并22pf可以,有效减少读取错误的现象,目前让客户调整相同的阻容,同步测试看看结果。
解决:目前的处理是上拉10K电阻,和对地并33pf可以,有效减少读取错误的现象。
9.3、SWM190 SPI方式驱动SD-TF应用 (摘自尹福臣、刘智创周报 2021.10.18)
协助松山电子分析SWM19S插入SD卡会导致重启的问题,多次做测试,不同的插入方式下有容易复位,读取波形,和拆开卡套模拟,测试电源电压没有明显变化。示波器测TF卡VCC纹波有500mV,经过VCC和RST波形抓取,发现VCC有10us的压降到2.0V左右,后续在SD卡座VCC和GND之间加106电容即可解决,排查得出是硬件Layout的问题,以及当前的layout本身因为VCC线路问题导致的压降。
9.4、针对具有QSPI功能的SPI-NORFLASH,如需要使用4线数据为(4BIT)方式进行读操作,则需要将QE位使能,再开启4BIT的都操作指令后进行读取。 如下图所示。
如没有开启QE位,则用4BIT进行读取的数据会有误,导致程序会判断SPI-NORFLASH的错误,如ID,格式错误等。 部分型号NORFLSH的QE位是出厂固定为1的,不能进行写0操作,具体要查看SPI-NORFLASH的数据手册。
十、SWM190中断优先级设置
SWM190 的中断优先级,采用Cortex-M的中断优先级设置函数 NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority), 优先级别 是 0~3,0的级别最高,默认都是0。 中断号参照下图中 SWM190.h 文件中的中断号排列。
如果有同时有两个中断发送, 按下图的序号来进行相应处理。 -- 2021.7.8
十一、SWM190系列PWM应用
12.1、周期的调整 –2021.5.25
注意:在应用PWM功能过程中,如需要对PWM的频率进行调整,需要向关闭对应的PWM模块,进行频率配置后,再打开对应的PWM模块。如果不关闭对应的PWM模块,直接设置周期,PWM模块输出为高电平或低电平。
如需要实现PWM实时的调整,则可以应用 PWM的新周期开始中断功能,在中断中设置新的PWM 周期,可以实现实时的PWM 周期调整。
SWM201、SWM341系列则可以直接设置PWM周期,不需要先关闭PWM模块。
十二、SWM19SCBT6驱动TFTLCD应用
12.1、可参阅 “SWM19SCBT7-50驱动TFT-LCD应用和注意事项20220106.pdf”
12.2、驱动TFTLCD应用EMI处理 --Liuzc 2023-6-24
现 象:精科睿(SWM190RB)的EMI测试环节,客户在150Mhz,180Mhz,210Mhz有频点干扰.
分析与解决:通过屏蔽Spiflash进行排查,发现干扰来自于30Mhz的PLCK信号上,目前串磁珠可以解决问题。
十三、SWM19SCBT6烧录应用
13.1、SWM190系列烧录程序下载成功后,读取Flash内的数据与源固件对比有差异
现 象:SWM19SCBT7应用在温控器项目,使用Synwit-PRG /J-Flash烧录程序后读取数据与源固件均不一致,差异之处均为同一处,且Synwit-PRG打开任意数据文件均会自动添加该处关键字。
分析及解决:此现象评估为Userboot和Flash启动的一些关键字,不影响程序的正常烧录、执行,但容易给用户造成误解,解释时言之有理即可。