查看: 1995|回复: 1

050硬件IIC发送256-510BYTE

[复制链接]

该用户从未签到

发表于 2014-1-6 19:32:42 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 南沟的水 于 2014-1-6 19:34 编辑

//stm32f050 hardware IIC send 256--510 Bytes
void MASTER2_Write(uint8_t* pBuffer,uint16_t NumByteToWrite)
{      
    uint8_t Num=255;
    uint8_t NumOfSingle=NumByteToWrite-255;
    /* Configue CR2 : Slave Address ,NBYTES, write request and RELOAD */
    I2C1->CR2=SlaveAddress|(255<<16)|(0<<10)|(1<<24);
    I2C1->CR2|=(1<<13);//START

    while (Num--)
    {         
        /* Wait until TXIS flag is set */
        while(!(I2C1->ISR &(1<<1)));  
        /* Write data to TXDR */
        I2C1->TXDR= *(pBuffer++);
    }
//    while(I2C1->ISR&(1<<6));
    while(!I2C1->ISR&(1<<7));//TCR=1
    Delay_ms(1);//????????????????????????????????????????????????????????????????????????????????????????????????????
    /* Update CR2 : set Slave Address, ,NBYTES, write request and Autoend mode */
    I2C1->CR2=SlaveAddress|(NumOfSingle<<16)|(1<<25);
    while(I2C1->ISR&(1<<7));//TCR=0
    while (NumOfSingle--)
    {      
        /* Wait until TXIS flag is set */
        while( !(I2C1->ISR &(1<<1)) );  
        /* Write data to TXDR */
        I2C1->TXDR= *(pBuffer++);
    }     
    /* Wait until STOPF flag is set */
    while( !(I2C1->ISR &(1<<5)) );
    /* Clear STOPF flag */
    I2C1->ICR|=(1<<5);
}
这里我自己加了个延时,如果不加,就不能正常发送。为什么?不应该要加延时啊。
求教青风大哥





回复

使用道具 举报

  • TA的每日心情
    开心
    2015-11-30 08:37
  • 签到天数: 220 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-1-7 09:08:33 | 显示全部楼层
    青风大哥呢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 03:46 , Processed in 0.120765 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.