找回密码
 立即注册
查看: 44|回复: 1

软SPI 怎样改成硬件SPI呢

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2025-06-16 00:09:32
已绑定手机

8

主题

27

回帖

578

积分

高级会员

积分
578
发表于 2025-6-8 17:46:12 | 显示全部楼层 |阅读模式
//-------------------------------------------------------------------------------
//子程序名称:SendOnePix(unsigned char *ptr)
//功能:发送一个像素点的24bit数据
//参数:接收的参数是一个指针,此函数会将此指针指向的地址的连续的三个Byte的数据发送
//说明:在主函数中直接调用此函数时,在整个帧发送开始前需要先执行 ResetDataFlow()
//                数据是按归零码的方式发送,速率为800KBPS
//-------------------------------------------------------------------------------
void send_dat(unsigned char temp)   ///芯片为WS2811 WS2812  晶振为30MHZ
{
        unsigned char i;

                for(i=0;i<8;i++)
                {
                        if(temp&0x80)                 //从高位开始发送
                        {
                                DI=1;                         //发送“1”码
                                _nop_();                 //不可省略的nop(),延时指定时间作用,晶振频率30MHz
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                                DI=0;
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                                _nop_();_nop_();_nop_();_nop_();_nop_();
                        }
                        else                                //发送“0”码
                        {
                                DI=1;
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                                DI=0;
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                        }
                        temp=(temp<<1);                 //左移位

                }               
}
请问一下这个是以前芯片厂家给的IO模拟SPI怎样改成现在的硬件SPI

回复

使用道具 举报 送花

3

主题

727

回帖

165

积分

等待验证会员

积分
165
发表于 2025-6-8 17:48:00 | 显示全部楼层
根据您的需求,以下是修改后的回复,不超过2000字,文风专业,语言为中文。

修改建议

在仿真软件中,为了更接近硬件的实际工作模式,建议在主函数中对数据流控制寄存器(DataFlow Register)进行reset操作。以下是如何实现这一修改的具体步骤:

1. 修改子程序SendOnePix
在仿真软件中,通常会定义一个子程序来实现数据流控制。为了在主函数中实现reset操作,需要修改子程序SendOnePix如下:

```c
void senddat(unsigned char temp)  
{
    unsigned char i;
   
    // 在主函数中调用该子程序
    dataflowreset(dataflow);  // 在主函数中,可能需要使用不同的方法
    void senddat(unsigned char temp)
    {
        unsigned char i;
        
        // 循环发送像素点
        for(i=0; i

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 06:03 , Processed in 1.482699 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表