S32K314 UART

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

S32K314 UART

803 Views
Joker_Y
Contributor III

最近在调试S32K314串口的时候遇到了一个问题,之前使用的是GD32/STM32平台,在串口用作实时打印发送的时候,我的做法是这样的:由APP层处理打印字符,调用底层写函数以中断的方式发送出去

Joker_Y_2-1781951653320.png

Joker_Y_4-1781951712695.pngJoker_Y_5-1781951735385.png

 

这里会直接写到数据寄存器中,很快就会发送出去,所以当APP层有庞大的数据发送下来也不用慌张,因为还有队列,发送数据很快。但是当使用S32K3我发现异步发送函数执行起来比较慢Lpuart_Uart_Ip_AsyncSend,里面一层套一层,相对来说同样字节的打印数据,S32K3比GD32要慢很多。AI给出一个办法

Joker_Y_6-1781952019622.png

 

在APP层将一个一个写入的方式改成用大缓存写入底层,然后底层写函数和中断用下面这种方式

Joker_Y_7-1781952213976.png

Joker_Y_8-1781952251883.png

这种方式在速度上的确会有所进步,不过要占用很大的ram空间,请问有没有什么更好的办法在空间和效率上都更好一些?

 

 

 

Tags (1)
0 Kudos
Reply
4 Replies

753 Views
db16122
Contributor IV

do you use any operating system at MCU level or just baremetal?

0 Kudos
Reply

703 Views
Joker_Y
Contributor III

使用的操作系统

Tags (1)
0 Kudos
Reply

695 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@Joker_Y

如果可以的话,你可以尝试直接用寄存器来实现LPUART的发送。

0 Kudos
Reply

521 Views
Joker_Y
Contributor III

请问应该怎么操作,麻烦发一下示例。

Tags (1)
0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2383704%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ES32K314%20UART%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2383704%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20recently%20encountered%20a%20problem%20while%20debugging%20the%20S32K314%20serial%20port.%20Previously%2C%20I%20was%20using%20the%20GD32%2FSTM32%20platform%2C%20and%20when%20using%20the%20serial%20port%20for%20real-time%20printing%2C%20my%20approach%20was%20as%20follows%3A%20the%20application%20layer%20processed%20the%20printed%20characters%2C%20and%20the%20underlying%20write%20function%20was%20called%20to%20send%20them%20out%20via%20interrupt.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_2-1781951653320.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_2-1781951653320.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_2-1781951653320.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_2-1781951653320.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_2-1781951653320.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389503i50B1B7CA282F1E5D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_2-1781951653320.png%22%20alt%3D%22Joker_Y_2-1781951653320.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_4-1781951712695.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_4-1781951712695.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_4-1781951712695.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_4-1781951712695.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_4-1781951712695.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389505i408453A4648BBDA3%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_4-1781951712695.png%22%20alt%3D%22Joker_Y_4-1781951712695.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_5-1781951735385.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_5-1781951735385.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_5-1781951735385.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_5-1781951735385.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_5-1781951735385.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389506i79ACFC94DAD28829%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_5-1781951735385.png%22%20alt%3D%22Joker_Y_5-1781951735385.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EThis%20data%20is%20written%20directly%20to%20the%20data%20register%20and%20sent%20out%20quickly.%20Therefore%2C%20there's%20no%20need%20to%20panic%20when%20the%20application%20layer%20receives%20a%20large%20amount%20of%20data%2C%20as%20there's%20a%20queue%2C%20and%20data%20transmission%20is%20fast.%20However%2C%20when%20using%20S32K3%2C%20I%20found%20that%20the%20asynchronous%20send%20function%20%60Lpuart_Uart_Ip_AsyncSend%60%20is%20relatively%20slow%2C%20with%20nested%20layers.%20Relatively%20speaking%2C%20for%20the%20same%20number%20of%20bytes%20of%20printed%20data%2C%20S32K3%20is%20much%20slower%20than%20GD32.%20AI%20provides%20a%20solution.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_6-1781952019622.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_6-1781952019622.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_6-1781952019622.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_6-1781952019622.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_6-1781952019622.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389507iB529EE315B0F0E62%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_6-1781952019622.png%22%20alt%3D%22Joker_Y_6-1781952019622.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EIn%20the%20application%20layer%2C%20the%20write-by-write%20method%20is%20changed%20to%20writing%20to%20the%20underlying%20layer%20using%20a%20large%20buffer.%20Then%2C%20the%20underlying%20write%20function%20and%20interrupt%20are%20handled%20in%20the%20following%20way.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_7-1781952213976.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_7-1781952213976.png%22%20style%3D%22width%3A%20304px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_7-1781952213976.png%22%20style%3D%22width%3A%20304px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_7-1781952213976.png%22%20style%3D%22width%3A%20304px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_7-1781952213976.png%22%20style%3D%22width%3A%20304px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389508iCE0212D285008DB4%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_7-1781952213976.png%22%20alt%3D%22Joker_Y_7-1781952213976.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Joker_Y_8-1781952251883.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_8-1781952251883.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_8-1781952251883.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_8-1781952251883.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Joker_Y_8-1781952251883.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F389509i27435D62121AA787%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Joker_Y_8-1781952251883.png%22%20alt%3D%22Joker_Y_8-1781952251883.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EThis%20method%20does%20improve%20speed%2C%20but%20it%20requires%20a%20lot%20of%20RAM.%20Is%20there%20a%20better%20way%20that%20is%20better%20in%20terms%20of%20both%20space%20and%20efficiency%3F%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2383717%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K314%20UART%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2383717%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Edo%20you%20use%20any%20operating%20system%20at%20MCU%20level%20or%20just%20baremetal%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2383894%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K314%20UART%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2383894%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EOperating%20system%20used%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2383969%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K314%20UART%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2383969%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%40%20%3CSPAN%3EJoker_Y%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EIf%20possible%2C%20you%20can%20try%20to%20implement%20LPUART%20transmission%20directly%20using%20registers.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2386742%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K314%20UART%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2386742%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3ECould%20you%20please%20provide%20an%20example%20of%20how%20to%20do%20this%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E