完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我无法读取或写入(通过I2C)以正常工作。 如果我从手机(S3)写文本''Hello World !!'然后通过I2C读取它我得到以下错误。 当我读取它的长度时,它表示0x14,但如果我尝试读取任何超过0x10的内容,它将失败(仅发送FF ...),但如果我只读取0x10(或更少)它将起作用?! 当我尝试写(通过I2C)时,我会得到错误代码67 00,但我看不出有什么问题。 如果我用手机读它就说它是空的,但是如果我通过I2C读它就可以在那里找到它。 下面是我通过I2C发送(并取回)的内容的总结。 谁能告诉我我做错了什么? 感谢帮助! void InitNFC() { //发送''杀死射频并打开I2C 发送AC 52 //选择NFC-T4 AC 02 00 A4 04 00 07 D2 76 00 00 85 01 01 00 CRC CRC //回读M24SR的回答 写AD,READ 02 90 00 CRC CRC //选择CC AC 03 00 A4 00 0C 02 E1 03 CRC CRC //回读M24SR的回答 写AD读取03 90 00 CRC CRC //读取CC文件长度 AC 02 00 B0 00 00 02 CRC CRC //回读M24SR的回答 写AD读取02 00 0F 90 00 CRC CRC //读取CC文件 AC 03 00 B0 00 00 0F CRC CRC //回读M24SR的回答 写AD读取03 00 0F 20 00 F6 00 F6 04 06 00 01 01 00 00 00 90 00 CRC CRC } //初始化完成 void ReadNFC() { //选择NDEF文件 AC 02 00 A4 00 0C 02 00 01 CRC CRC //回读M24SR的回答 写AD读取02 90 00 CRC CRC //读取NDEF消息长度 AC 03 00 B0 00 00 02 CRC CRC 写AD读取03 00 14 90 00 CRC CRC //读取NDEF消息 AC 02 00 B0 00 02 10 CRC CRC //长度14不起作用,0到10有效(我得到了一些答案),但超过10将导致所有FF的答案 写AD读取02 D1 01 10 54 02 65 6E 48 65 6C 6C 6F 20 57 6F 72 90 00 CRC CRC //发送取消选择 AC C2 CRC CRC 写AD读C2 CRC CRC } // ReadNFC完成了 void WriteNFC() { initNFC() //选择NDEF文件 AC 02 00 A4 00 0C 02 00 01 CRC CRC 写AD读取02 90 00 CRC CRC //删除NDEF消息长度 AC 02 00 A4 00 0C 02 00 01 CRC CRC 写AD读取03 90 00 //写NDEF消息 AC 02 00 D6 00 02 0D D1 01 09 54 02 65 6E 4E 69 63 6B 65 21 21 CRC CRC 写AD读取67 00 CRC CRC //写NDEF消息长度 AC 03 00 D6 00 00 02 00 0E CRC CRC 写AD读FF FF FF FF FF //发送取消选择 AC C2 CRC CRC 写AD读C2 CRC CRC } //完成WriteNFC void main(void){ initNFC() ReadNFC() WriteNFC() } 以上来自于谷歌翻译 以下为原文 Hello, I can't get either read or write (over I2C) to work correct. If I write the text ''Hello World!!'' from the phone (S3) and then read it over the I2C I get the following error. When I read the length it says 0x14, but if I try to read anything over 0x10 it will fail (only sending FF...), but if I read only 0x10 (or less) it will work?! Same when I try to write (over the I2C), then I will get the error code 67 00, but I can't see what's wrong. If I read it with the phone it says it's empty, but if I read it over the I2C I can find it there. Below is a summery over what I send (and get back) over the I2C. Anyone that can tell me what I'm doing wrong? Grateful for help! void InitNFC() { //Send ''Kill RF and open I2C Send AC 52 //Select NFC-T4 AC 02 00 A4 04 00 07 D2 76 00 00 85 01 01 00 CRC CRC //Read back answer from M24SR Write AD, READ 02 90 00 CRC CRC // select CC AC 03 00 A4 00 0C 02 E1 03 CRC CRC //Read back answer from M24SR Write AD Read 03 90 00 CRC CRC //Read CC file-length AC 02 00 B0 00 00 02 CRC CRC //Read back answer from M24SR Write AD Read 02 00 0F 90 00 CRC CRC //Read CC file AC 03 00 B0 00 00 0F CRC CRC //Read back answer from M24SR Write AD Read 03 00 0F 20 00 F6 00 F6 04 06 00 01 01 00 00 00 90 00 CRC CRC } // Init done void ReadNFC() { //Select NDEF file AC 02 00 A4 00 0C 02 00 01 CRC CRC //Read back answer from M24SR Write AD Read 02 90 00 CRC CRC //Read NDEF message length AC 03 00 B0 00 00 02 CRC CRC Write AD Read 03 00 14 90 00 CRC CRC //Read NDEF message AC 02 00 B0 00 02 10 CRC CRC //Length 14 does not work, 0 to 10 works (I get some of the answer), but over 10 will cause answer to all FF Write AD Read 02 D1 01 10 54 02 65 6E 48 65 6C 6C 6F 20 57 6F 72 90 00 CRC CRC //Send Deselect AC C2 CRC CRC Write AD Read C2 CRC CRC } // ReadNFC done void WriteNFC() { initNFC() //Select NDEF file AC 02 00 A4 00 0C 02 00 01 CRC CRC Write AD Read 02 90 00 CRC CRC //Erase NDEF message length AC 02 00 A4 00 0C 02 00 01 CRC CRC Write AD Read 03 90 00 //Write NDEF message AC 02 00 D6 00 02 0D D1 01 09 54 02 65 6E 4E 69 63 6B 65 21 21 CRC CRC Write AD Read 67 00 CRC CRC //Write NDEF message length AC 03 00 D6 00 00 02 00 0E CRC CRC Write AD Read FF FF FF FF FF //Send Deselect AC C2 CRC CRC Write AD Read C2 CRC CRC } //WriteNFC done void main (void){ initNFC() ReadNFC() WriteNFC() } |
|
相关推荐
1个回答
|
|
解决了!感谢Wen-Kai,他帮我找到了解决方案。
诀窍是在写入和读取NDEF消息之间添加一个小延迟。 //读取NDEF消息 AC 02 00 B0 00 02 10 CRC CRC //在这里添加超过10us的延迟(对我而言,它使用50us,但在某些情况下可能需要100-300us。 写AD读取02 D1 01 10 54 02 65 6E 48 65 6C 6C 6F 20 57 6F 72 90 00 CRC CRC /尼克拉斯 以上来自于谷歌翻译 以下为原文 Solved! Thanks to Wen-Kai, who helped me to find the solution. The trick was to add a small delay between the write and read of the NDEF message. //Read NDEF message AC 02 00 B0 00 02 10 CRC CRC // add a delay here of more then 10us (for me it worked with 50us, but 100-300us might be needed in some cases. Write AD Read 02 D1 01 10 54 02 65 6E 48 65 6C 6C 6F 20 57 6F 72 90 00 CRC CRC /Nicklas |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2632 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3607 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:11 , Processed in 1.064170 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号