CMS8S6990 硬件IIC驱动 OLED(128x64)

取模配置

程序移植过程使用硬件 IIC,后面发现没有波形,或者发送了一个。

测试发现程序开启内部上拉需要等待一段时间,否则高电平没有建立起来。

硬件IIC 开始把判断标志位搞错了,应该判断状态寄存器最高位。

static void lcd_send_cmd(uint8_t c)
{
	// IIC地址
	I2CMSA = 0x78;
	I2CMBUF = 0x00;
	// start+1byte data
	I2CMCR = 0x03;
	// 等待传输完成
	while((I2CMSR & 0x80) != 0x80);
	// 清空标志位
	I2CMSR = 0x00;
	
	I2CMBUF = c;
	// 启动传输 开始信号+1字节数据
	I2CMCR = 0x01|0x04;
	// 等待传输完成
	while((I2CMSR & 0x80) != 0x80);
	I2CMSR = 0x00;
}

 

按照上面的组合可以很快配置出IIC。

 

开始也出现配置不对的问题,

以后发现这个问题,直接找对应的例子初始化,不用起自己写,浪费时间。

 

后面发现需要检测ACK信号,但是判断ACK还需要 做超时等待,而且加重发机制,避免程序卡死问题。

 

在IAR集成开发环境中(Integrated Development Environment)使用MSP430F5529的I²C驱动OLED显示通常涉及以下步骤: 1. **库支持**: - 首先,确保你已经在IAR工具链中包含了支持MSP430F5529和I²C功能的库文件,如TI的MSP430Ware或者第三方提供的驱动库。 2. **初始化IIC**: - 在程序开始时,你需要配置IIC控制器的地址、时钟速度等设置。这通常包括打开IIC端口、设置数据线方向为从设备模式,并可能设置中断标志以便于接收和发送数据。 ```c void configure_I2C(void) { I2CDriverInit(I2C_PORT_1); I2CSetSpeed(I2C_SPEED_STANDARD); // 设置标准速率,如100kHz或400kHz I2CSetSlaveAddress(I2C_SLAVE_ADDR, I2C_ADDRESS_WRITE); // 设置OLED设备地址 } ``` 3. **连接到OLED**: - OLED屏幕通常需要特定的数据命令序列来初始化和显示内容。创建一个结构体或数组来封装这些命令和数据,然后通过IIC发送。 ```c typedef struct { uint8_t command; // 命令字节 uint8_t data[]; // 数据字节 } OLEDCommandData; void send_data_to_OLED(OLEDCommandData cmd_data) { I2CWrite(cmd_data.command, sizeof(cmd_data.command)); for (int i = 0; i < sizeof(cmd_data.data); i++) { I2CWrite(cmd_data.data[i], 1); } } ``` 4. **显示文本或图像**: - 根据OLED规格,将每个像素的R/G/B值转换为适当的I2C指令,并通过I2C写入。 5. **处理中断和错误**: - 如果你的驱动库支持,可以注册IIC中断处理函数来监听传输完成或者错误发生的情况。 6. **测试和调试**: - 编写主循环,在其中调用上述函数发送数据,然后检查OLED是否正确显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值