还是关于主机SPI接收
从机通过I2C采集数据,再通过SPI传给主机(因为主机没有I2C接口,又不想用模拟I2C,太占资源,所以用从机转一下),现在可以传送数据到主机,但现在问题出现了:
主机定时每1ms采样一次,给从机发一次空数据,启动SCK,从机传送数据,主机接收。可能第一次传送时正好从机准备好了
收到SCK后直接传给主机,主机接收正确;下次采集时从机还在进行I2C转换,没有来得及将新数据放到发送缓冲器中,这次采集
的数据都是0XFF,主机收到N个0XFF后,从机转换完成,又收到正确数据了。收到的数据如:
正常数据+0xFF+0xFF.............+0xFF+0xFF(15个0XFF)+正常数据+0xFF+0xFF.............+0xFF+0xFF(15个0XFF).................
1)请问怎么知道从机准备好了,主机再启动SCK?或者主机怎么过滤掉没用的数据?
2)我让从机发送有用信息的时候,发帧头0X5A+0XA5,主机收到帧头来识别收到的是有用信息,发现主机不能识别,为什么?
我是在主机1ms定时中断中完成启动SCK和接收从机信号的。
3)我要怎么解决这个问题?谢谢 你可以用I2C中断发送数据到主机啊 主机没有I2C接口,怎么中断啊 另外,我试了一下,把主从机SPI断开,主机虚发送,启动sck,接收回来的是0XFF,表明主机接收SBUF里默认为0XFF,因为MISO根本没连接,悬空的 USART不能用? 传感器输出只有I2C,主机又没有I2C,用从机转一下 laoguren 发表于 2012-11-5 14:37 static/image/common/back.gif
主机没有I2C接口,怎么中断啊
从机用I2C采集数据,在I2C中断里面用SPI发送数据到主机 这样做有什么好处?可以避免采集无用数据的问题?有点想不通,能详细解释一下么? 主要问题就是:怎么保证“从机在主机发送数据前准备好数据(放在数据寄存器中)” ◆ 从机通过I2C采集数据,再通过SPI传给主机
SPI 模式下是 MASTER 主导通讯,所以你应把从机的 SPI 设为 MASTER,而主机的 SPI 为 SLAVE 就成了。 现在问题是MOSI另有他用了,板子已经定死了,没法用,肿么办? 把主机现在使用中,接到 MOSI 脚的连接改接至 MISO 脚,留出 MOSI 脚作 SPI 之用,因为主机是 SPI SLAVE,不必使用 MISO 脚。记得要更改 DDR记存器。 看来只能这么办了,在现有基础上的话只能通过软件来解决了。
页:
[1]