Dear Dialog,
In Dialog SPS software,RX_CALLBACK_SIZE is 8 in this demo. UART_STATUS_OK is called when the data is bigger than 8 ,otherwise UART_STATUS_TIMEOUT is called back。
之后我改变RX_CALLBACK_SIZE to16,UART_STATUS_TIMEOUT should be called when I sent data which is less than 16. But I found out UART_STATUS_TIMEOUT is called back when I sent any data which is less 16 except 8. 8 is not called UART_STATUS_TIMEOUT .
Could you please help with this problem.
Thanks.
Best Regards
Overheat
Device:
Hi,
That sounds strange. So sending 7 bytes and sending 9 bytes triggers the timeout, but 8 doesn't? Please confirm, so I can have our applications team look into this. When you send 9 bytes, does the timeout actually trigger first or is there a chance that the UART_STATUS_OK is triggered first (with 8 bytes available)?. If so, I am guessing that the read function somewhere in the application is hardcoded to read 8bytes instead of using the actualRX_CALLBACK_SIZEdefinition.
I also found the same problem. When RX_CALLBACK_SIZE is 8 , PC sends less than 8 bytes will trigger UART_STATUS_TIMEOUT , more than 8 bytes will trigger UART_STATUS_OK at first 8 bytes,but 8 bytes trigger nothing.After setting RX_CALLBACK_SIZE bigger than 8 such as 16, 1~7、9~15 bytes will trigger UART_STATUS_TIMEOUT , 16 bytes trigger UART_STATUS_OK,more than 16 bytes trigger UART_STATUS_OK at first 16bytes,but 8 bytes still trigger nothing.It confused me long time and i wonder if it is chip bug.Plese give me some help and best regard!
Hi airjang,
How do you perform your tests? we 've tested with RX_CALLBACK_SIZE and the UART_STATUS_TIMEOUT occured properly. Additionnaly the if you want to change the RX_CALLBACK_SIZE the values that the driver supports are 1, 4, 8, 14 and if you want to perform this kind of change you should change also the UART_IIR_FCR_REG to the corresponding values 0x07, 0x47, 0x87, 0xc7 and the previous values should be placed in function uart_sps_init() in file uart_sps.c.
// XMIT FIFO RESET, RCVR FIFO RESET, FIFO ENABLED,
SetWord16(UART_IIR_FCR_REG,0x87); //rcv int when rx fifo 1/2 full
Thanks MT_dialog
Does that mean RX_CALLBACK_SIZE only support 1,4,8,14? Is it illegal if i define it with another value like 15,16? maybe that is the reason i met data loss.
Otherwise ,i found 0x11 and 0x13 can not be received by DA14580 in DSPS.
For example,if i send 0x10 0x11 0x12 0x13 0x14 0x15 to DA,only 0x10 0x120x14 0x15 is received;if I send 0x11 0x11 to DA,there is a callback but no data is received.The problem confused me a long time.If it is a bug of DSPS SDK,how can I sovle it?If it is a mistake of me,can you help me find it out?
Hi airjang,
The DSPS application is configured to function with the settings i ve mentioned in my previous post. Any other configuration most probably isn't going to be functional.
Thanks MT_dialog