芯片:CC2640R2F
例程:SimplePeripheral
问题:在实际项目中,需要用到两路串口,一路用于串口通讯,一路用于输出口志。之前SimplePeripheral利用NPI程序进行一些日志的的输出,我想把NPI输出的底层换成SCS模拟的这个,然后用2640硬件自带的那路串口做通讯的工作,现在SCS模拟的做好了,请问在哪里可以把NPI输出的底层串口换掉?
Viki Shi:
还真没有这样的例子,为什么不用自带串口做NPI,SCS做普通串口通讯?
z z46:
回复 Viki Shi:
这 个NPI其实不是自带的,是我从别处移植来的,自带的串口被用作Display了
Viki Shi:
回复 z z46:
没看明白,也就是说你需要三个串口?一个display,一个NPI,一个其他通讯?
z z46:
回复 Viki Shi:
不是,我没有表述清楚。
是这样的,我用的是simpleperipheral例程,其中自带的硬件串口已经用作Display来打印日志了,我需要另一路进行串口通讯,所以我利用SCS模拟了一个,然后移植了NPI部分例程过来,想利用NPI下层的串口收发程序做为串口通讯的底层,严格来说已经不算是NPI了,因为我有自己的协议和帧格式,所以只是利用NPI底层的一些buffer缓存和处理。现在要怎么把这个挪过来的NPI和我SCS模拟出来的串口对接到一起呢?
我说清楚了吗~~~
Yonghua Pan:
回复 z z46:
你要不要换一下,用硬件串口做通信,sensor controller做打印。
z z46:
回复 Yonghua Pan:
其实我也想这样,毕竟硬件串口最稳定,但是这样的话,就得把Display的底层输出换成SCS模拟的串口,请问这个要怎么操作呢
Yonghua Pan:
回复 z z46:
你不一定要用Display的中间件的,把display disable掉,直接去操作SCS的串口去打印也行的。就像是你write UART一样,这样更单纯。
z z46:
回复 Yonghua Pan:
这种方法有两点顾虑:
1.直接调用uart_write函数有没有可能导致某个task时间过长?如果采用9600或115200发送数据并直接调用串口打印函数,打印字数多的时候,task占用时间就不可估计,我之前看到一个帖子,好像是说某个task占用时间过长时,freertos有一个机制会kill掉这个task,想向您确认下有没有这个风险
2.SimplePeripheral例程里已经用了很多Display函数,要是替换就得修改每一个Display_printf函数…想想就有点烦人呐。。。
Yonghua Pan:
回复 z z46:
1. 因为你只是调试而已,所以你可以专门用一个task去写串口也可以的,优先级设置的低一点,一次不要写的数据太多。
2. 你如果还是想用display的话,那就是将npi_tl_uart.c里面的函数调用要替换掉,换成去操作sensor controller
z z46:
回复 Yonghua Pan:
谢谢你的回答。
关于第2个,有点问题仍想请教。
我工程里的display是例程自带的,使用的是虚拟文件/文件夹,我不知道怎么去找他的底层文件,并且,我如果做了修改的话,会影响其他引用这个文件的工程吧,我该如何操作呢?