接上篇:http://forum.eet-cn.com/BLOG_ARTICLE_11715.HTM
在nSS置低后,依次在MOSI输出地址、OP代码、数据长度和数据字节。
同样,W5200支持单字节写操作和多字节写操作。单字节写操作由4个指令组成:16位地址、1位OP代码(1)、15位数据长度和8位数据数组。单字节写操作时,数据长度需设置为1;而多字节写操作时,数据长度需设置为数据实际长度。在进行写操作时,在nSS进入低电平后,需将MSO置低。
/* 每8bit数据包写数据的虚拟程序代码 */ #define data_write_command 0x80 uint16 addr; //地址: 16bits int16 data_len; //数据长度 :15bits uint8 data_buf[]; // 数据数组 { |
SpiSendData(); //由MCU传送数据到 W5200
ISR_DISABLE();// 禁止中断服务程序 CSoff();// CS=0, SPI 开始 SpiSendData(((addr+idx) & 0xFF00) >> 8); //地址字節 1 SpiSendData((addr+idx) & 0x00FF); //地址字節 2 // 写数据命令 + 数据长度上限 7bits SpiSendData((data_write_command | ((data_len& 0x7F00) >> 8))); // 最后的数据长度8bits SpiSendData((data_len& 0x00FF));
//写数据:在 data_len> 1, 突發读取處理模式(Burst Read Processing Mode) for(int idx = 0; idx;> SpiSendData(data_buf[idx]); CSon(); // CS=1, SPI 完结 IINCHIP_ISR_ENABLE(); // 禁止中断服务程序
|
更多精彩内容,我会继续和大家分享,欢迎留言并评论,谢谢!
文章评论(0条评论)
登录后参与讨论