您好!
我有一个8Mbit 串行闪存、通过 SPI 连接到 MSP。 闪存用于实时保存测量数据。 所有值均保存为十六进制。
我对一个函数进行编码、以将数据从闪存中获取、并通过 UART 发送到 PC (板载 UART 到 RS232转换器和 RS232到 USB 转换器)。 一般而言、通信没有问题。 如果我所做的就是发送十六进制值、那么一切都很完美。
如果我修改数据使其以 ASCII 格式传输、以便能够直接使用它将其保存在.txt 中并在 Excel 中使用数据、则会出现此问题。 我尝试了2种不同的转换方法:使用 sprintf()或模数运算来分离每个数字。
闪存上有65536数据包。 在将整个闪存填充为数据并使用 HTerm 从 PC 读取数据后、恰好在传输大约40个完全随机的封装期间、MSP 会出现某种断续模式。 在接收端、几乎缺少一个完整的封装。 它只是在早期的下一个封装中继续运行。 这造成大约80个包件有缺陷,这是不可接受的。
由于十六进制传输的工作方式、因此 MSP 修改数据必须存在一些问题。 首先、代码从闪存中检索一个16字节的整包、并将每个字节保存在数组中。
使用 sprintf 转换的代码:
///////////////////////////////////////////////////////////
char dataen[10]; sprintf (dataen、"%d."、flash_ausgelesen_Daten[0]); uart_print (daten); sprintf (dataen、"%d."、flash_ausgelesen_Daten[1]); uart_print (daten); sprintf (dataen、"%d;"、flash_ausgelesene_Daten[2]); uart_print (daten); sprintf (daten、"%d:"、flash_ausgelesene_Daten[3]); uart_print (daten); sprintf (dataen、"%d:"、flash_dataen[3];flash_daten_datesen[4] UART_PRINT (daten); sprintf (dataen、"%d;"、flash_ausgelesen_Daten[5]); UART_PRINT (daten); sprintf (daten、"%d;"、flash_ausgelesen_Daten[6]); UART_PRINT (daten); sprintf (dataen、"%d;"、flash_ausgelesene_Daten[7]); uart_print (dataen); //此部件转换为整数整数 int Spannung、temperatur、Strom、Druck; Spannung=(flash_gelesene_Daten[8]<<dataene]+<11_zh_datesene[8]+[gelen_zh_zh_datene]+<en_en_zh_en_en_ene]<11_zh_en_zh_zh_en_en_en_enuesen_ene<1 (temperategelen_en_en_en_en_en_en_en_en_en_en_en_enuesenuesen_en_enuesen_enuesen_en_en_en_enu+<11]<11_zh_enuesenuesenuesenuesen_zh_en_zh_ char spannung[10]、strom[10]、temperatur[10]、druck[10]; sprintf (spannung、"%d;"、Spannung); sprintf (strom、"%d;"、Strom); sprintf (Druatur、"%d;"、temperatur); sprintf (struck、"%d);sprintf (dr); UART_PRINT (spannung); UART_PRINT (strom); UART_PRINT (temperatur); UART_PRINT (DRACK); UART_SendByte (0x0A);
///////////////////////////////////////////////////////////
F233非常小、仅有8kB 闪存和1kB RAM、我非常喜欢它的功能:
MSP430:加载完成。 有7568 (代码)和26 (数据)字节被写入闪存。 预期的 RAM 用量为829字节(未初始化的数据+堆栈)。
可能是 MSP 在处理转换时遇到问题、因此这些问题是否其他人有任何想法?
我们考虑将具有双倍闪存和 RAM 的 F235与下一个电路板一起使用、是否可能不会在大哥身上发生间断?
我希望有人理解我的问题并能帮助我。 我正在尝试通过转换 PC 上的数据来解决问题、但我对 Visual Studio 缺乏技能给了我一些问题。