正在利用am3358开发一款产品,其中一项需求是利用am3358的gpio引脚给外部芯片发送数据,原理很简单,一根CLK线,一根DATA线。在时钟下降沿发送数据。我写了gpio的驱动,在应用程序中利用一下程序给外部送数据
for(f_size = 0; f_size < (down_size +30); f_size++)
{
for(i = 0; i < 8; i++)
{
ioctl(fd_gpio,Clk,0);//clk = 0
send_val = ((fpga_data[f_size] >> (7 – i )) & 0x1);
ioctl(fd_gpio,Din,send_val);
ioctl(fd_gpio,Clk,1);//clk = 1
}
}
利用示波器观察,发现发送频率是420kHz。
我想提高发送频率,有没有办法,谢谢!
Jian Zhou:
AM335x的SPI和I2C接口都不能满足要求么?
rabbit:
回复 Jian Zhou:
给外部芯片传送数据是利用普通的GPIO引脚,只需要1根时钟信号和1根数据信号。现在想提高一下传输速率,是否可以通过修改时钟频率达到要求。
Gino E:
回复 rabbit:
你好,
如果对时钟要求较高,建议直接使用硬件模块的方式,比如i2c或者spi模块。AM335x下的速率不会很高,不会高于1M。如果要是在操作系统下面,这个速率值会更低。
你提到的修改时钟频率是说修改ARM主频么?ARM主频的提高不能提高这个速度。
leo chen:
回复 Gino E:
3359的IO接口速率也就这个水平,我以前测试过,没找到什么好的办法提高
rabbit:
回复 Gino E:
不用for循环,利用定时器中断会好一点吗?
Gino E:
回复 rabbit:
你好,
不会有太大的改善,这个和定时器中断关系不大。
yinghua pan:
我想问你一下,你的这个模拟过程,有没有实现读取数据的操作,我现在可以实现写的过程,但是读取时不行.
TI中文支持网