|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! Q7 i8 a+ _( c$ M: ?
void PSCInit(void)
7 i& E; m6 |( Q0 Z% h" ~{
! U* R; d* \. F, }3 L3 y& d PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ d0 R/ N* x0 _- ^* z}
7 K6 [" }' `4 |$ _! ?9 H+ c$ W- q Z
void GPIOBankPinMuxSet(void). \: ^, k- ^/ o
{
6 ~ I( _: q) F- b( Z8 |0 _. u% ^ // DRDY ------------ GPIO6[14] -- 111
" ]; L- Y$ U( V9 Q0 F4 S [ // SPI1_CLK ------------ GPIO2[13] -- 46
* V) c; W: b* l$ `( ?% ^: _ // SPI1_SOMI------------ GPIO2[11] -- 441 F7 @$ `' o" [# J4 `
// SPI1_SIMO------------ GPIO2[10] -- 43
& x& K$ K: V+ J/ @+ J& [% Y // SPI1_CS2 ------------ GPIO1[0] -- 17- w& f7 R# T8 v% G
// SPI1_CS3 ------------ GPIO1[1] -- 18
" ^7 B. u' O. S- h6 z
: Z' K8 w9 c2 G7 s! m9 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% @; e0 K* c& A( ^6 g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% q; c3 x/ ^( F( a1 v: {' C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 O% ^+ x( b+ b* h6 S+ p+ V" @) t/ W7 H9 y: ~* S1 r. |" R: u
//DRDY3 W& r2 S1 w; z2 y3 T! l
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 W: E% R- `- k' Y: { // CS2,CS3
" v7 W1 V- s. { GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2/ x' [; m. Q9 A. P) Y
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ H" G% j3 w6 c/ T
//SIMO
6 O: R2 W9 l: p$ p GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
c! C/ Q2 C8 T //SOMI0 {9 i- U# j8 a5 r( ]
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' M* k$ v: M; D9 a+ g# |8 @5 J0 s //CLK* }( k) I9 r) R( _- z3 Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 B4 Y# y: P; p* U5 o& M; J! b. Z% S8 y6 z' @; _
// LDAC+ @4 R# I1 ^$ ~
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK& v+ n l3 t: O7 E- q' ?" j, _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ T: z- P. N: O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 \) x" {( p1 d' e/ f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 B8 H2 V# ]& P GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! p% x3 y7 f; ~8 ^+ J6 i C% E, K
}4 b8 e; |6 P- J
9 a( H" M8 A7 oint main(void)" B! W" J' g8 i. {
{
& Q& z0 Q2 a' ~& D0 } // 外设使能! J: Z: E# | _ p, \0 o
PSCInit();4 u' O j/ l2 F8 l9 {
7 a) e" a2 W8 Z2 Z% m
. m* j- Q. D+ ?+ e
// 管脚复用配置
, N# N4 N& |! O* x- i- |5 a GPIOBankPinMuxSet();
6 u6 Q: T0 E- v/ N* d! ~8 o( g for(;;)
3 A9 `6 E. @7 F+ h. @3 \) l {' U) l& N% s2 R% Z- z
SET_SCLK();//时钟正常输出
5 Z- P+ {6 \, R- P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* t4 q4 [& \0 T) u: W, j, e7 }" d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* j, B- |, M( p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 A0 I2 K; |) Z8 }( y( }; I9 q
4 b, O$ L( C' z# D( U0 M delay(20);
/ f3 P5 L! c4 U6 W: D CLR_SCLK();
* q0 M5 @8 a; m# l- g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% I% s8 v( K; x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
. x/ r) F; N" q8 J% K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! {- u( h3 q3 }8 I) }
delay(20);
3 _2 x A* g' X# g/ G! `3 n. d' x }
& |7 n! m7 C+ ?8 z, C& n8 |/ X}
; R( @$ U" |1 h7 H H4 s |
|