-
:Sad: 肿么木有人
-
写这部分是挺简单的,但是要读取出来然后用DAC输出这块我不知道该怎么弄
-
我的采样频率是8khz
SD卡的通信没问题,可以读写数据
我想知道的是怎么把ADC的数据写到SD卡,需不需要用到DMA
-
我就是直接用raw的,不要文件系统,单片机能读就行了
我还没找到类似的例子,有的例子都是写到内部flash的,这个我已经可以了,写到sd卡貌似和写flash不太一样
-
谢谢!扇区是不是就是sector?512byte?
我现在的想法是自定一个array,比如叫ADCresult[512]
把ADC转换的数据存到这个array里面,然后把这个array写到SPI的TXBUF
这样可以吗?
还是我需要用到DMA?
-
谢谢你的回复
但是这个只是从SD 卡读取数据啊
我是录音和播放,从ADC获取声音数据,然后存到SD卡,关键是这一段我不知道该怎么弄
继续求助!
-
能通过编译,程序也是全的
断点时程序已经到while(1)了,但是TimerA 中断就是不执行
-
:Sad: :Sad: :Sad: :Sad:
-
版主!!帮帮忙!!
-
:Cry: :Cry: :Cry: :Cry: :Cry:
-
:Cry: 怎么没人啊
-
:Cry: 怎么没人啊
求助啊!
-
自己顶!!求指点!
-
你好,我用的LCD确实是没有多余的pin来连MISO了,datasheet上也没有连接MISO
顺便问一下,我程序一开头有这么一段:
do
{
IFG1 &= ~OFIFG; // 清晶振失效标志位
for (i = 0x47FF; i > 0; i--); // 延时
}
while (IFG1 & OFIFG); // 晶振失效标志位仍存在?
这个意思是等待晶振稳定吗?但是我的程序就一直在这里循环,进行不下去,是内部晶振问题吗?谢谢
-
我是程序运行时测试的,应该不是电磁干扰,可以看出是square wave,频率低duty cycle很大,从来没见过
如果停止程序,P7.3是高电平
-
谢谢你的回复!
你意思是把STE设为GPIO?不用SEL来选peripheral?那这样是不是就是3pin spi啦?
P7DIR和P7SEL能同时选一个pin?
-
顶一下,谁来帮帮我啊
-
我觉得我的程序应该没问题啊,都能运行,一步一步debug也没发现有什么问题,能帮我看看吗?万分感谢!
#include
#include "pic.h"
/* For USI, these are the required pin assignments:
* P7.0 CS -- Chip Select .
* P7.1 SDO -- serial data out (MOSI for master)
* P7.3 SCL -- serial clock
* P7.4 A0 -- Command/Data .
* p7.5 RESET
*/
#define LCD_D P7SEL |= 0x01 // Chip Select line
#define LCD_E P7SEL &=~0x01
#define Data_out P7OUT |= 0x10 // Command/Data mode line
#define Com_out P7OUT &=~0x10
#define RST_E P7OUT |=0x20
#define RST_C P7OUT &=~0x20
unsigned char data[]; int bytes;
void init_LCD(void);
void dispPic();
void main( void )
{
volatile unsigned int i;
// Stop the watchdog timer so it doesn't reset our chip
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
FLL_CTL0 |= XCAP14PF; // Configure load caps
// DCO to stabilize.
__delay_cycles( 1000 );
P7SEL |= 0x0B; // P7.1,3 option select
P7SEL &=~0x30;
P7DIR |=0x30; // P7.0,4,5
P7OUT |=0x30;
UCA0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB+UCMODE_2; //4-pin, 8-bit SPI master
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 2; // /2
UCA0BR1 = 0; //
UCA0MCTL = 0; // No modulation
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0TXIE; // Enable USCI_A0 TX interrupt
// Pause so everything has time to start up properly.
__delay_cycles( 5500 );
// Initialize the LCD panel.
init_LCD();
while(1)
{ //loop forever
dispPic(logo); //show image
__delay_cycles(1000); //wait 1s
dispPic(graphic1);
__delay_cycles(1000);
dispPic(graphic2);
__delay_cycles(1000);
}//_BIS_SR(LPM0_bits + GIE); // CPU off, enable interrupts
}
void spi_IO( unsigned char data[], int bytes )
{
int n=0;
// Set Chip Select low, so LCD panel knows we are talking to it.
LCD_E;
while(n < bytes)
{
UCA0TXBUF = data[n]; // load byte into transmit buffer
__delay_cycles( 100 );
n++;
}
//IE2 &= ~UCA0TXIE;
// Set Chip Select back high to finish the communication.
LCD_D;
}
/****************************************************
* Initialization For controller *
*****************************************************/
void init_LCD()
{
RST_E;
__delay_cycles( 50 );
RST_C;
__delay_cycles( 50 );
RST_E;
__delay_cycles( 50 );
unsigned char init_data[]=
{
0xA0,0xAE,0xC0,0xA2,0x2F,0x26,0x81,0x2F
};
Com_out; // set for commands
spi_IO( init_data, sizeof(init_data));
Data_out;
}
void dispPic(unsigned char *lcd_string)
{
unsigned int i,j;
unsigned char page = 0xB0; //Page Address + 0xB0
LCD_E;
Com_out;
UCA0TXBUF=0xAE; //Display OFF
UCA0TXBUF=0x40; //Display start address + 0x40
for(i=0;i
-
:Cry: :Cry: :Cry: :Cry: :Cry: :Cry: :Cry:
求助啊
-
再请问一下,TXBUF是不是传输数据直接就走SIMO那个pin了啊?SIMO那个pin要怎么设置呢?