完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我是一个新手,在PSoC 4上工作,通过SPI传输一个传感器。 在阅读和尝试了大量的文件和例子之后,我仍然不能做一个SPI示例工作。没有LCD,我如何测试SPI示例? 要读取我的传感器的寄存器,我需要选择和取消选择;写一个字节地址到MOSI,从MISO得到一个哑字节,写一个字节0x00到MOSI,得到我的数据回来。 我设置了一个GPIOAS芯片选择PIN,并连接Msito 3(1),MISO到3(0),SCK到0(6);并且编写了相应的固件,但是不能一无所获。 有人能帮我看看吗? 非常感谢! Cyrkk.Access 01.Zip 432.3 K |
|
相关推荐
9个回答
|
|
我工作了!
增加写入到MOSI和读MISO之间的延迟。 CyDelayUs(75);Unt32 Read Buffels= SpistMaist-SPIUARTRADRXDATA(); 但是,我不知道最小的延迟时间。在Arduino,我可以阅读MISOas的长期变化,我可以写一个“虽然”句,可以帮助我做到这一点?我该怎么写呢? 谢谢您! |
|
|
|
通常,当从SPI读取时,不需要延迟函数。
想象一下SPI是如何工作的:对于你发送的每个字节,你同时接收一个字节。 写一个字节意味着:将字节放入发送缓冲区,然后返回到调用方。 字节的发送将花费一些时间,所以接收似乎被延迟。 我建议你把你的SPI访问分为“事务”,一个给定的字节数来发送和接收。使缓冲区和最大的交易量一样大。当您发送数据检查(等待)发送的最后一个字节(GETTXSTATUS()和SPIZON)之后,您已经接收到所有数据并可以访问它们。 鲍勃 |
|
|
|
嗨,鲍伯,
我喜欢你的建议,并将在我今后的应用尝试,虽然我不太了解(gettxstatus() &;spi_done);但是,谢谢你! 然而,在这种情况下,我必须做一个字节的时间访问我的传感器,和两个字节一起分别读一登记。 我不知道为什么会有一个延迟是必要的,但事实证明,为了得到正确的数据是至少6人。 PSoC编程是从Arduino完全不同,和底layers'programming很多需要做的工作。 我在寻找一种方式来实现下面的句子,这是在Arduino系统, 串行(可用)(); 串行FLUSEH(); 我尝试了一些句子中的PSoC Creator,但是失败的时候,你能帮我吗? 非常感谢! |
|
|
|
ncmza 发表于 2019-9-20 13:39 嗨,鲍伯, 我用过 SmithMeaveSpUARTActutXBuffER()作为Simult.FrHuSE(); 和 UTI8UARTHRADIOFABABLE检查(空隙){UIT8字符=0; 如果(SPixMistalCaseRxIsSWySuffic)字符=1;否则字符=0U;返回字符;} 但看起来uuARTHealAdvababeChar()函数不起作用。 你能帮我修改这个UARTARX RealDeababChar()函数吗? 谢谢您! |
|
|
|
“冲洗”通常意味着“写出(完整)优秀的设备I/O”,而“清除”有“放弃(停止)任何未完成的I/O”的意思,所以两者本质上是不同的。我建议你等待完成,这将类似于“冲洗”。
您应该打开SPI数据表并检查可用API。有一个SmithMaskGETTXBuffTestSoCube(),它提供了一个位掩码,显示哪些条件可能产生中断(当启用时)。一个比特代表一个完整的传输:当这个位被设置时,SmithMaskIn MySmithPixPy完成,来自FIFO的最后一个字节已经被传输。然后可以从接收缓冲区或FIFO中读取(自动选择)。 鲍勃 |
|
|
|
ncmza 发表于 2019-9-20 14:16 谢谢您!你关于冲水的提示是完全正确的。 但它是关于UART控制,而不是SPI;与PC通信,而不是传感器。 你认为UARTARX RealDeababChar()函数应该是什么? 我试图检测按钮按下,同时连续传输数据到PC,但是从来没有测试一个按钮按下;这意味着它没有检查UARTHARE可读取。 你能帮助我修复函数UntualAdvababl检查(),以便任何按钮按下可以停止我的沟通吗? 谢谢您! |
|
|
|
没有API名为SpIGMasixCuthRx.SWyBuffer-()。
您应该使用SpjMistalPipARTeGrxBuffSersie()来返回缓冲区中的字节数(而不是缓冲区的大小)。 所以你的程序应该是这样的 UTI8UARTHRADIOFABLE检查(无效) {返回(SPIX MistuxPiuAtGeTrxBuffrsisie())!= 0); 因为这是一个线性,你甚至不需要它的函数,你甚至可以写在你的程序中。 UIT8 MyBuffe〔10〕; UIT8指数=0; 而(SpistMaist-PiuTrAgTrxBuffrsisie())MyBuff[index +++ ] = SpmithMistalPixARTRADRXDATA(); 现在你的缓冲区已经有了数据。 鲍勃 |
|
|
|
ncmza 发表于 2019-9-20 14:40 嗨,鲍伯, 你是对的! 我把它固定了 返回(0U)!= uARTHI SPUARTARGETRXBuffelsiz()); 非常感谢!没有你我不行。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
716个成员聚集在这个小组
加入小组1901 浏览 1 评论
1652 浏览 1 评论
3405 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1568 浏览 6 评论
1380 浏览 1 评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
186浏览 2评论
183浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
321浏览 2评论
349浏览 1评论
62浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 13:48 , Processed in 0.685070 second(s), Total 52, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号