完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
亲爱的专家,我想把一些小的数据在我cy8c4247lql-bl483闪光。我发现这是cysysflashwriterow API(UInt32 rownum,const uint8 rowData [ ])。但是,我不能指定行号。你能给我一些建议,我应该用行吗?确认如果行是可用的,在那里我可以检查闪光灯的使用?
|
|
相关推荐
13个回答
|
|
我建议您使用EMEEPROM(仿真EEPROM)组件,它比处理闪存行更容易处理。
记住,系统时钟在写入Flash时会有变化,所以最好是在那时禁用BLASH。 有一个CL语言扩展(我不太满意这种方式),使用“const”关键字在Flash中有一个变量(结构或数组): const国际32 MyVaR=123456; 需要“const”关键字,编译器需要初始化以将此var放入Flash中。在函数中,您必须声明变量为“static”,或者将其分配到堆栈上。 不要使用另一个VaR=MyVar;//这个WIL设置ANOTVAR到123456;不管MyVar的重新编程!! 相反,使用MeMyPy*()将EEEEPROM区域转移到SRAM区域。 鲍勃 |
|
|
|
目前,仿真的EEPROM不支持BLE设备。您可以使用APICYSysFLASKWrrrOWO自己写入Flash。首先,您需要确定项目当前正在消耗多少Flash。每个闪存行是128字节宽。根据最终Flash字节的地址(之后你可以看到完整的零点(你可以从调试器中看到)),你可以把这个地址除以128来找到行号。
另一个选项是强制编译器将Flash数据存储在一些固定的位置。例如,如果您希望将Flash数据放置在地址0x1000,首先打开构建设置-& gt;链接器& gt;命令行-&;自定义标志和添加:- Wl,-节开始= MysSeClord1= 0x000 这将数据放在闪存地址1000中。 现在在您的项目中,全球使用:UTI8MyFlash数据DATA属性((节)(MyOxSeist1))= {0xAA,0xbb,0xCC,0xDD}; 现在,数据AA、BB、CC和DD将被放置在地址1000-1003。 希望这有帮助! |
|
|
|
哎呀,我不知道该emeeprom组件尚未发布psoc4bles。
写入FLASH或EEPROM中有一个临界点:当有在写一个功率损失(以毫秒范围内的时间)你会有损坏的数据。当你有了一个cy8ckit-042-ble你会发现一些框架板上,你就可以通过I2C。写入FRAM在µ的范围可以很容易地实施完毕后桥功率损失检测。另外的一些框架写周期远大于闪存或EEPROM。 鲍勃 |
|
|
|
你可以设计你的电源来“保持”足够长的时间来处理。
内部闪存写入操作(S)。Ie你可以消除需要 外部存储器。像这样的东西 电源(PSoC 1,但一般PSoC适用性),如果你在一个关键的循环,无论是控制机器,或写内部EEPROM,电源和UP必须处理检测和有序终止处理线程在电力损失。一些点——1)使用LVD来提醒即将发生的功率损失。进程中断创建有序关机。考虑到LVD的拾取点,更接近能量源通常更好地控制和最大化功率损失。如果需要外部LVD,那么使用A/D转换器作为LVD器件。但也可能会出现与PIN注入电流限制相关的电路设计问题,例如PSoC上没有功率时,而是出现在LVD感测节点上。一个简单的串联电阻可以解决这个问题。2)单独的LVD是不够的,一些过程需要时间在损失的功率完成。这就是短期能源储存至关重要的地方,例如电解、散装瓶盖、电池……3)电路设计,确保能量帽不通过二极管隔离提供能量回到线路或调节器。肖特基优选(开关功率MOSFET最佳)由于可能的低VF,更少的浪费PDES,并允许更大的V柔顺范围的设计。4)计算所需的CAP大小(这是一个近似值,假设负载看起来像恒流源),在实际负载中通常是电阻性的,因此人们将使用指数来计算。UP看起来像一个常数i加载由于CV*2×F PDES,而负载,例如具有I限制电阻器的LED,看起来更具有电阻)-Q=C x V,I=C x dV/dt,C=(i x dt)/dv,dt=(c x dv)/i i是最大电流需要DT是完成处理器线程完成所需的时间,像EEPROM写作为一个例子,DV是允许电压下降,以确保在操作规范内的停留,基本上(VROSSIOFF POWER检测-Vupmin)所有计算必须采取最坏情况的值,以确保C min是计算,超过V和T表示另一种方式,因为C和DV上升,我下来,我们最大限度地延长时间允许继续运行在电力损失。所以我们可以使用LVD关downprocesses使用电源,LED显示驱动为例,关闭高速CLKS模块如PWM,计数器,等下我所需要的。然后完成有序停机。很明显你关机的关键过程,就像人类,蜱虫控制安全的,等等。第一...... J 5)一个典型的计算(29466,标称值,你需要最坏情况的例子值)–A.假定12 MHz的时钟,这使得PSoC的操作在3 V至5.25 V,假设VDD标称为5V,+ / - 5%。你可以使用LVD切换时钟从24兆赫到12兆赫在优化时速度正常功率有效利用更宽的操作电压范围。选择lvdlow_trip = 4.64 V,这是一个警告的力量是注定要失败的,所以DV = 3 = 4.64–1.64V。总和电流要求,注意PSoC规格显示核心电流分离模块的电流,所以你需要和所有的电流。也为tytpicals PSoC电流限制,那么您将需要使用一个“忽悠”因素的比例提高。或表征设计温度在极端自信有价值。所以我=(IUP + imodules)xffudge,让选择50马为例,修正因子2 X,所以我= 100毫安,。还要糟糕的情况下,尽你所能。最后,假设我们的主要问题是写EEPROM,我们想写一块充满信心只是电源失败。需要200毫秒。我们还需要添加一些代码的执行时间为有序的关机休息,说50 ms.然后DT =。25秒方程是安培,伏特,法拉所以我们(名词)C =(1×25)/ 1.64 = ~。015法拉,或15000用友。电解公差相当差,非常的温度依赖性,所以这个因素的必要价值。[网址] HTTP:/ / www.cde。COM /目录/ aeappguide .pdf [/url]最后这个电容器必须在电源恢复充电,所以使用定义的方程和可用的当前估计恢复电容充电,在启动电源转换率的思考。保护器的输出从一个二极管或电容放电开关和调节器输出系列MOSFET。注意其电压降的因素纳入计算。香料有用到整体供应设计手柄。电容器可以在输入或输出端是你的调节器,拓扑结构,一定的优势和注意事项。此外,更多的能量可以储存变压器领域。香料很好地估计这种行为。提醒你有最坏的情况下,所有的值在T和V的一个成功的、可靠的设计。不要忘记组件老化效应。 |
|
|
|
|
|
|
|
谢谢!这些建议很有帮助!我真的很感激!是的我想在电池死亡病例闪存存储数据。我们的项目需要把包住了很长一段时间,她在完成任务后回收。
|
|
|
|
你知道eepromcomponent已经发布了吗?
|
|
|
|
Furlong 发表于 2019-9-5 09:38 我以前写的使用方法与上述图片及flash;ST微。但我无法写PSoC BLE盒闪光。它每一次我试图在部分编写任何异常处理程序。即使以上自变量是uint8和我们使用它作为阵列。查询:1。变量是uint8类型,但我们使用它作为阵列。2。我变为一个数组,但是我无法用写my_flash_data [ 0 ] = 12;。每当我做这个代码进入异常处理程序。三。我不确定其他柏树闪光,但微闪0xff是闪光/部门写擦除后。技术上它将1 0的基础上修改的值,但不能转换为。例如,如果你写0x00到Flash擦除后你就不能在这之后你需要擦除扇区再写任何东西。我的问题是,这种行为是柏树闪光。如果是,那么步骤,我可以将数据存储在Flash的特定部分和读/写/存储它就像我想要的是什么。4。我也尝试cywriterow方法,进入异常也。 |
|
|
|
阿尼什,把你的完整项目写在BLE Flash上,这样我们就可以看看你的所有设置了。要做到这一点,使用C造饰者和GT;文件-GT;创建工作区束(最小)并附加结果文件。
鲍勃 |
|
|
|
你好,鲍伯,我没有正确计算使用的Flash,并且在CysSyFrutsReWrOw函数的情况下提供了已经使用过的行。现在我可以成功读取Flash上的写入数据。
但我面临的新问题是,每当我尝试连接任何BLE设备,PSoC立即重置。如果我在代码中评论Flash读/写行,一切都会顺利进行。Flash有什么问题吗? 我用BLE先锋工具包。 |
|
|
|
pipompipom 发表于 2019-9-5 11:27 写Flash会有一个变化的内部时钟时(这是恢复完成时),中断并不是在写处理。这会干扰BLE。 尝试关闭、准备不中断处理(和许多完成时)和写入Flash。 BLE先锋试剂盒已登上这是连接通过I2C FRAM和一些会更容易在断电的情况下操作。考虑使用FRAM存储信息在断电。 鲍勃 |
|
|
|
大家好,
我试图做同样的事情,读和写数据从Flash。基本上,我希望使用其余的闪存来存储值,然后读取和发送一个通信协议。 通过这种方式,使用来自PSoC引用的信息,我创建了一个模块。我使用的芯片是CY8C4248BLQI-BL580,芯片具有BLE和256KB的闪存,排列在1024行(0~1023,如我观察到的)中,每个字节256个字节。也不要为我感到困惑,开始和结束行都是450,因为我打算从450行开始(代码大约是415行),然后转到1023,但是为了测试,我只想填充一行并读取它。 当然,所有的人都可以自由地使用这个代码,这对你来说是当然的。您应该修改的唯一行是前2行、开始行和结束行编号。 [更新]在代码中添加了一些注释。也自由建议改进/发现错误。我认为代码也可以使用地址来完成,但是我在PSoC中使用了行,如果您在一行中写入3个元素,它将自动删除整个行。 &代码; 包括“Cyflash”。 /*开始行,其中您想将数据放入Flash */y*中定义FLASHOR.NSTROSTESTARTW 450 /*最后一行,其中您想将数据放入Flash */y*中定义FLASHOR.NSTOREDRONE 450//1023/*头,以了解当前写入行和Read行* /静态UT32 32 FLASHOLU32 CurrutRealServer=FLASHOL NSTROSTARTROW;静态UIT32 32 FLASHUL U32 CurrureRealReave= FLASHL NStestestARTW; /*写入Flash方法。在输入处接收的数据应该是行的大小,在我的情况下,在其他128个*/ITC8 FLASH I8StuleDATA(UTI8*PU8DATA){It8 HealalStase= CythySyFlash的成功;It8 I8Stand=1; /*检查是否仍有行可用于写*/IF(FlasuxUrrutRealServer and lt;= FllasyNStureDeNew){HunalStase= CysSyFlsReuleRoWo(FllasuxU32 CurrutWrrServer,PU8DATA);/*检查状态,如果成功增加写行头,否则返回错误代码*/IF(HealAltSt= = CythySysf)LASHION成功){FLASHOUL32 CurrutWrrErrOW+++;}否则{I8Stase= -1;}否则{i8Stase= -1;}返回I8Stand;} /*从整个行的FLASH读取MulHod;如果需要的话,该方法可以读取小于一行的*/It8FLASH I8GETDATA(UTI8*PU8DATA){UIT8 AU8DATA [CyfFLASH SIEZOFFORION ];UTI8*PU8AuxPosix;UTIN 16U16索引;It8 I8Stand=0;/*检查是否存在闪存读取和令牌中的某物。E头* /如果(flash__u32currentreadrow <;flash__u32currentwriterow){ /*创建指针地址使用行的大小和读取的行头* / pu8auxpointer =(uint8 *)(cy_flash_base +(cy_flash_sizeof_row * flash__u32currentreadrow));/*复制所有的数据行,这也可以做用memcpy但我没有测试过* /(u16index = 0;u16index <;(uint16)cy_flash_sizeof_row;u16index ++){ au8data [ u16index ] = *(pu8auxpointer + u16index memcpy();} pu8data,au8data,cy_flash_sizeof_row); flash__u32currentreadrow ++;}否则{ i8status = 1;}返回i8status;} /*返回行填数,读写头* / UInt32 flash_u32getstoreditems(void){ UInt32 u32result;如果(flash__u32currentreadrow >;= flash__u32currentwriterow){ u32result = 0;}否则{ u32result =(flash__u32currentwriterow - flash__u32currentreadrow);}返回u32result;} / *重置读写头本应在闪空操作* /无效flash_vresetstoreditems叫(void){ flash__u32currentwriterow = flash__nstorestartrow;flash__u32currentreadrow = flash__nstorestartrow;} & lt;/代码& gt; |
|
|
|
更新:
你好, 它工作了一段时间,但后来我有一些时钟问题,即使我使用了256KB闪存芯片,并在数据表中声明,这些芯片不应该有时钟问题,或任何副作用的问题。原来是这样。 但好消息感谢CyPress社区使用一个技术票,我们用另一个函数纠正了这一点:来自BelyStAdHestMaun.h文件的CyByLyStuleAppDATA。在头文件中,您可以检查说明。如果用这个函数替换FLASH I8StReDATA的功能,您就可以去了。我能够完全写闪存与光连接,直到现在我没有任何问题。 &代码; It8 FlasyI8StuleDATA(UTI8*PU8DATA){It8*Pu8AuthPosivIn;IF(FlasuxUlCurrutWrdReWOR&lt;=Flllas-nStureEndRew){Pu8AuxPosith=(UTIN 8*)(Cyflash FlaseBase+)(Cyflash FlaseSigeFuffy*FlasuxU32 CurrutWruteWORW);而(CyLylStuleAppDATA(PU8DATA,PU8AuxPosiple,CyFlash大小)奥弗罗,0)!{ CyBylErrrOrthOK){;} FllasuxU32 CurrutWruteRoop++;}否则{I8Sturt==1;}返回I8Stand;} & lt;/Clult& Gt; |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2105 浏览 1 评论
1851 浏览 1 评论
3669 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1786 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
568浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
423浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
437浏览 2评论
383浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
915浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:55 , Processed in 1.192167 second(s), Total 72, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号