使用IAP15单片机的SPI控制数字电位器MCP41XXX
- 1. SPI的硬件连接
- 2. 软件
-
- 2.1 初始化
- 2.2 串口接收命令并发送
- 3. 总结
1. SPI的硬件连接
SPI与单片机连接可以是硬件SPI也可以是普通的SPI,我用普通终端连接SPI,有三个端子:
CS P1.2 - 片选信号 SCLK P1.5 - 时钟 SI P1.3 - 数据输入是单片机的MOSI
注意,在IAP这三点是硬件SPI但是我没有在软件中使用这些点。相反,使用软点SPI通信的方式。
2. 软件
通过串口输入数据进行测试通信,然后通过SPI发送到MCP,试验效果。
2.1 初始化
sbit bCS = P1^2; sbit bSCK = P1^5; sbit bMOSI = P1^3;
将所有数字口设置为准双向口,初始化完成。
2.2 串口接收命令并发送
将检测串口输入语句添加到主程序中,当输入为spi读取输入的数字,如果数字小于255,则发送到SPI。
if ( strncmp(RX1_Buffer, "spi", 3) == 0) {
sscanf(mStr1, "%s %d\r\n", mStr2, &u16Temp); if ( u16Temp < 255 ) {
SPIData = u16Temp; printf("The SPIData will be send: %d\r\n", (u16)SPIData); bCS = 0; writeByte(0x11); writeByte(SPIData); bCS = 1; } }
下面是写SPI的分程序,writeByte(u8 Data)
void writeByte(u8 xSend) {
u8 i; bMOSI = 0; bSCK = 0; for ( i
=
0
; i
<
8
; i
++
)
{
bMOSI
=
0
; bSCK
=
0
;
if
( xSend
&
0x80
)
{
bMOSI
=
1
;
} bSCK
=
0
; bSCK
=
1
; xSend
<<=
1
;
}
}
以上程序在IAP15单片机上通过。
3. 总结
SPI并不一定要使用硬件的接口,可以通过软件实现,这在和SX1278等的通讯中验证是完全可以胜任的,这次的试验也验证了软SPI可以和具有SPI接口的部件通讯。