BobAGI,只是对您发布的代码的注释。值得注意的是,许多“现成的”代码对于芯片来说并不优化。我不确定您使用的是哪一个芯片,但是我使用的所有FJ都具有增强的SPI模块。代码明显地写16位字,但是使用字节!SPI具有16位模式。为了与8位兼容,编写了大量的s/w,包括大部分MChip。代码使用Rx标志来等待发送的字节在启动另一个之前发送。这是一种“懒惰”的技术,会导致SPI输出中的“口吃”,而不是恒定流。即使STD模块也不应该像这样操作,更不用说增强了。有关RX缓冲区的查询读取。对于只读操作(EEPROM、FLASH等),不需要为RX服务。是的,它会溢出,但是什么呢?在执行读取操作之前只需清除标志。这是阻塞代码,长缓冲区写入(和读取)最好通过中断(甚至DMA)作为“服务”来完成。使用控制/状态信号来指示忙碌/故障/成功等。即使没有int或dma,SPI也应该设置为轮询服务,如果端口已满/忙,则跳过该端口。我作出这些评论的原因是,像16MHz FJ这样的慢cpu需要从其外围设备获得的所有帮助。!!!我使用有4K缓冲区的芯片,阻止代码让FJ入睡!!!!希望这有助于Yorky。
BobAGI,只是对您发布的代码的注释。值得注意的是,许多“现成的”代码对于芯片来说并不优化。我不确定您使用的是哪一个芯片,但是我使用的所有FJ都具有增强的SPI模块。代码明显地写16位字,但是使用字节!SPI具有16位模式。为了与8位兼容,编写了大量的s/w,包括大部分MChip。代码使用Rx标志来等待发送的字节在启动另一个之前发送。这是一种“懒惰”的技术,会导致SPI输出中的“口吃”,而不是恒定流。即使STD模块也不应该像这样操作,更不用说增强了。有关RX缓冲区的查询读取。对于只读操作(EEPROM、FLASH等),不需要为RX服务。是的,它会溢出,但是什么呢?在执行读取操作之前只需清除标志。这是阻塞代码,长缓冲区写入(和读取)最好通过中断(甚至DMA)作为“服务”来完成。使用控制/状态信号来指示忙碌/故障/成功等。即使没有int或dma,SPI也应该设置为轮询服务,如果端口已满/忙,则跳过该端口。我作出这些评论的原因是,像16MHz FJ这样的慢cpu需要从其外围设备获得的所有帮助。!!!我使用有4K缓冲区的芯片,阻止代码让FJ入睡!!!!希望这有助于Yorky。
举报