完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在标准生成代码中是否存在宏(或者在代码示例中,如果需要的话)通过皮质M3位带特征设置/清除/切换位?
我想利用这一点,不间断地读取/修改/写入与SRAM中的一组缓冲器中的每一个相关联的一些状态位。从我所理解的,应该是可能的,但我想知道我是否需要自己翻滚。我是用汇编,而不是用C预处理器。 以上来自于百度翻译 以下为原文 Are there macros anywhere in the standard generated code (or, in a code sample, if need be) for setting / clearing / toggling bits through the Cortex M3 bit-banding feature? I'd like to take advantage of this for uninterruptible read/modify/write of some status bits associated with each of a bunch of buffers in the SRAM. From what I understand it should be possible, but I'm wondering if I need to roll my own. I'm OK with assembly, not so much with the C preprocessor. |
|
相关推荐
9个回答
|
|
道格
下面链接提供的信息可能会有所帮助。 HTTP://FixCal..ARM.COM/Help/Nojx.jSP?主题= /COM.ARM.DOC FAQS/KA4203.HTML 以上来自于百度翻译 以下为原文 Doug, The info provided at the link below may be of some help. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka4203.html |
|
|
|
谢谢,我会的。
你们应该考虑把这个滚动到和PSoC Creator一起的库中。在我看来,只要没有使用,代码大小就没有影响。 以上来自于百度翻译 以下为原文 Thanks, I will do that. You guys should consider rolling this into the libraries that come with PSoC Creator. It looks to me like there's no impact on code size as long as it is unused. |
|
|
|
谢谢大家的参考,DASQ…我还对访问比特带区域的一种简单而一致的方法感兴趣。
对于任何感兴趣的人,目标URL稍微更改为HTTP://FixCal.ARM.COM/Help/Nojx.jSP?主题= /COM.ARM.DOC FAQS/KA4203.HTML IOW,只需添加一个“L”到原始URL,你就可以了。但是请注意,这个文档已经被缓存在ARM站点上,所以我不确定这是否会限制它的可用性。 PCPETE 以上来自于百度翻译 以下为原文 Thanks for the reference, dasq... I'm also interested in an easy and consistent way to access the bitband region. For anyone interested, the target URL has been slightly changed to http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka4203.html IOW, just add an 'l' to the original URL and you should be fine. But be aware, this document has been cached on the ARM site, so I'm not sure if that will limit its availability -PCPete |
|
|
|
用于特征请求的碰撞!如果API生成了这样的定义,那么你就不需要自己翻滚了。
理想情况下,GPIOs等的API函数应该只使用这一点,它们现在的速度非常慢。 作为一个例子,尝试运行这个并比较速度。当刚切换引脚时,下面的三种方法得到了大约300 kHz(API调用)、1.1 MHz(API宏)和1.7 MHz(比特带)的输出频率。 定义了BITBANNEL PARIORIFF 0X4000 定义了BITBANNEL PrimeBASIC 0x4200万 定义了BITBANTHOPER Pi(A,B)((BITBANTION PURBASBASE+(A- BITBANNEPURIORIF)* 32 +(B*4))/ /转换PII地址 定义了TestPixBITBANDYDATAOUT *((易失性无符号char)(BITBANGE-PII(TestPin 0,0)))/位0是Cyp-Pin SPC-DATAOUT 定义了TestPixBITBANDYDATAIN *((易失性无符号char)(BITBANTHO-PII(TestPin 0,4)))/位4是Cyp-πPC-Pin状态 int() { (1){ //API调用 TestPixIn编写(1); TestPixIn编写(0); //API宏指令 CypSSIn SETPIN(TestPin 0); Cypssi-Cycliin(TestPix0); / /位带 TestPixBITBANDYDATAOUT=1; TestPixBITBANDYDATAOUT=0; } } 以上来自于百度翻译 以下为原文 bump for feature request! it would be great if the API generated defines for this so you don't need to roll your own. ideally, the API functions for GPIOs etc should just USE this, they're crazy slow as it is now. as an example, try running this and compare the speed. when just toggling pins, the three methods below got me output frequencies of about 300 KHz (API call), 1.1 MHz (API macro) and 1.7 MHz (bitbanding). #define BITBAND_PERI_REF 0x40000000#define BITBAND_PERI_BASE 0x42000000#define BITBAND_PERI(a,b) ((BITBAND_PERI_BASE + (a-BITBAND_PERI_REF)*32 + (b*4))) // Convert PERI address#define TESTPIN_BITBAND_DATAOUT *((volatile unsigned char *) (BITBAND_PERI(Testpin_0,0))) // bit 0 is CY_PINS_PC_DATAOUT#define TESTPIN_BITBAND_DATAIN *((volatile unsigned char *) (BITBAND_PERI(Testpin_0,4))) // bit 4 is CY_PINS_PC_PIN_STATEint main(){ while (1) { // API call Testpin_Write(1); Testpin_Write(0); // API macro CyPins_SetPin(Testpin_0); CyPins_ClearPin(Testpin_0); // Bitbanding TESTPIN_BITBAND_DATAOUT = 1; TESTPIN_BITBAND_DATAOUT = 0; }} |
|
|
|
60user125 发表于 2019-3-20 11:05 这太棒了! 赛柏队 请在代码生成器中实现这一点,用这个代替所有的写(1)(0),而不是一个大的和免费的加速。 以上来自于百度翻译 以下为原文 this is awesome! team Cypress, please implement this in the code-generators & replace all _write(1) (0) with this instead for a great & free speed-up |
|
|
|
似乎GPIO TestPixBITBANDYDATAUE有一个不太稳定的占空比 以上来自于百度翻译 以下为原文 seems for GPIO TESTPIN_BITBAND_DATAOUT has a less stable duty cycle |
|
|
|
在PSOC5中最快的PIN写入,可以使用(使用释放/编译速度设置) TestPin控制=1;/ / 2时钟 TestPin控制=0;/ / 3时钟 说明: C++ VS汇编语言与Verilog语言。关于Vimeo 以上来自于百度翻译 以下为原文 For fastest Pin write in PSoC5 you can use (use Release / Compile for Speed settings) TestPin_Control=1; // 2 clocks TestPin_Control=0; // 3 clocks Explanation: C++ vs Assembly vs Verilog. on Vimeo |
|
|
|
nvwuwy 发表于 2019-3-20 11:46 在PSoC创建者4看来,它看起来是这样的: (1) { TestPixDr=1和lt;TestPin位移; TestPixDr=0和lt;TestPin位移; } 我看到12MHz。谢谢您。 以上来自于百度翻译 以下为原文 It seems in PSoC Creator 4.0 it looks like this: while (1) { Testpin_DR = 1 << Testpin_SHIFT; Testpin_DR = 0 << Testpin_SHIFT; } I see 12MHz. Thank you. |
|
|
|
Evgeniy 事实上,看起来CyPress改变了底层代码并使它更快。现在设置引脚高只需要一个时钟。设置PIN Low也是一个时钟,2个时钟转到“OF”循环。在24MHz附加屏幕截图 下面是一个屏幕截图,当8个连续的HI/LO语句被放置在循环中时,使得它1000会自动地把它带到时钟/ 2: ODISSEY1 以上来自于百度翻译 以下为原文 Evgeniy, Indeed, looks like the Cypress changed underlying code and made it faster. Now setting pin High takes only one clock. Setting pin Low is also one clock, and 2 clocks goes to "for" loop. Attached screenshots at 24MHz Below is a screenshot when 8 consecutive Hi/Lo statement are placed in the loop, making it 1000 will assimptotically bring it to clock/2: /odissey1 |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2100 浏览 1 评论
1846 浏览 1 评论
3665 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1782 浏览 6 评论
1532 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
561浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
413浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
433浏览 2评论
379浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
906浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:16 , Processed in 1.070716 second(s), Total 93, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号