20
蓝冠招商待遇,
蓝冠测速登,
蓝冠测速平台,

蓝冠招商《Q374919》 数字补偿岗位涵盖了建立开关模式电源的所有控制方面,但不包括外部通信和控制。这篇文章将演示如何编写dsPIC I2C代码,蓝冠官网 以及如何用c#与dsPIC对话。

假设

我假设:

你知道如何写dsPIC的C代码

你知道如何写c#

您对I2C协议有一定的了解

您愿意钻研一些工作代码,而不需要手动操作和过于详细的解释

因此,这里有足够的信息让您理解每段代码的意图,您可以使用一些灰色信息来实现您自己的代码。但是如果你完全不知道什么,蓝冠注册 请不要犹豫,尽管问。我的假设并不总是准确的。

你应该带什么回家

如果您遵循这些示例,您应该能够使一个I2C在一个下午以最小的努力工作,而且它应该是可靠的。

dsPIC状态机

在你布局你的板之前,有几件事你需要知道。dsPIC可以从两套不同的引脚编程:

PGEC1 / PGED1或PGEC2 / PGED2

I2C使用引脚SDA和SCL,它们与PGEC1/PGED2共享。

如果你用PGEC1/PGED2来编写dsPIC,蓝冠招商 当你编写dsPIC时,你将不得不删除你的I2C加密狗或驱动电路。当程序员连接上时,I2C可以说话,但反过来就不行。

设置I2C

I2C必须启用在您的C代码:

(代码lang =“c”)

空白InitI2C(空白)

{

PMD1bits。I2C1MD = 0;//启用I2C模块

//设置为从属

I2C1CONbits。I2CEN = 1;/ /启用I2C

I2C1CONbits。DISSLW = 0;//启用了转换速率控制

I2C1CONbits。SMEN = 0;//没有SMB级别

I2C1CONbits。GCEN = 0;//允许一般调用中断

I2C1CONbits。ACKDT = 0;/ / ACK /

I2C1CONbits。ACKEN = 1;/ /使消

I2C1CONbits。斯特恩= 1;/ /拉伸启用

I2C1ADD = 0 (;//设置从地址

I2C1STAT = 0 x0000;//清除stat寄存器

//设置波特率

I2C1BRG = 0 x18b;// 100Khz波特率

//设置中断

IPC4bits。SI2C1IP = 5;/ /中断优先级

_SI2C1IF = 0;// I2C中断标志状态位被清除

_SI2C1IE = 1;I2C中断启用

}

(/代码)

需要注意的关键是,您需要设置从地址、启用中断和设置中断优先级。优先级必须低于控制环路中断,以便不中断PWM。我最初将控制循环设置为最高优先级(1),其次是定时器/斜坡中断(3),并将I2C(5)设置为最低优先级。然而,这导致I2C随机锁定。解决方法是将定时器/斜坡中断优先级设置为5。这意味着I2C可以破坏一个斜坡。

你必须注意的第二个关键问题是dsPIC有多少时间可以处理I2C呼叫。控制回路通常使用至少50%的处理器。因为I2C的优先级更高,所以它只把剩菜剩饭当晚餐吃。如果I2C活动过多或处理器时间不足,则会出现超时。

相关文章
为您推荐
各种观点

报歉!评论已关闭.