|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' Z1 c0 Y1 E9 B" N& ]2 q$ Hvoid PSCInit(void) {! F# h3 N# O
{! Y: a3 C& s9 K' J. X( t
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 S% U c) g Q n' O; D! j5 o
}* n7 e* s! k6 W3 w
$ n, n/ W. P. W2 J" Jvoid GPIOBankPinMuxSet(void)
0 l I: a1 J9 E{7 ~5 |/ c% N2 [& `0 }6 v: D
// DRDY ------------ GPIO6[14] -- 1113 I; \4 ~/ {$ P* M0 [) V7 r# h5 d
// SPI1_CLK ------------ GPIO2[13] -- 46' n/ i8 G# {8 I2 b# C' h
// SPI1_SOMI------------ GPIO2[11] -- 44
( P7 Z6 t6 Q' h, a; d j: q // SPI1_SIMO------------ GPIO2[10] -- 43( b) X i/ ]# x' ~( n5 U: k. {1 k
// SPI1_CS2 ------------ GPIO1[0] -- 17& |! o3 q1 P f, E# X, C. c
// SPI1_CS3 ------------ GPIO1[1] -- 18' C$ C2 {& S7 Z( M! U
8 L% `1 }7 U3 l! ] L& G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; J6 a, f K/ g1 L+ `! B. X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# E- Q. v- A6 L/ ^9 P0 v' i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' }) D [1 |- G
* ?4 }4 c7 i) }6 q) ~ //DRDY7 c) _% y' a2 d7 y2 t
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ g" T% j; _9 c
// CS2,CS3( Q9 `1 O, ~% A5 n1 N' L* B/ |5 d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) m$ _3 l" \8 m: D- x0 @+ @
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) s, r) r) U9 n: ^
//SIMO
& x8 S* ~) m& a( o' z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; Z2 X7 ]: n/ i% Q, }) |' X
//SOMI
" l" I5 p% a+ P$ h3 U' u* j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
% P1 V: F5 o, j; o7 b' } //CLK/ f0 W- f3 v. F# u, \
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 N. R2 t# m( `9 [6 h6 C
7 m& u1 E c% j4 C# i+ Z) f) [
// LDAC
: d* Q2 V% J, j- g0 ~7 P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK W8 I! A7 K- ~7 N7 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 Q. _5 f' L0 v4 `) }. d; t; M' F0 M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 P* h2 ?8 ~( G9 l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 N0 ?# q2 d t
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 Z/ c$ R& V4 }+ ~8 O* \! n* a
}$ C/ N9 \5 {' r9 h1 E. J
; ]" x6 O6 n, Q. M8 J1 H k0 [- O5 T
int main(void)" R, o) {: r& U* ~ b5 H& b
{4 r! E$ V( M, x1 z
// 外设使能
+ e3 G6 {8 M! Q4 z- m" F e PSCInit();
( U$ |, c2 |! J0 V) U8 L) w0 Q) r- h! a' k: Q: Z. n, s% f0 N( L
* ]0 n+ @" W- J$ F) v% D // 管脚复用配置
3 G& l K' |, w- Q* r% N+ z GPIOBankPinMuxSet();8 T0 V9 v% q( j- q# c3 c' r8 P
for(;;)" I5 P& a5 l! p" e
{
% o. V. d3 c/ ^- ^' N+ E' N1 M% H SET_SCLK();//时钟正常输出2 Q% @; [0 V2 \2 |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 G5 W/ C5 o3 a% n1 q" P' x C' A2 c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' T% |: H6 {8 n4 D. a; {- J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 {9 D7 L7 h) F+ c( f3 _
' j0 L+ Z; k/ L; d& S delay(20);
2 x7 ~( p1 H4 ?1 [3 N1 ]: f CLR_SCLK();
0 M0 q. c- J5 r9 n* y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 _5 Q2 h8 }: h2 H5 D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
; Z9 R$ W) Z' k# i% h+ o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 e9 n3 O9 J! b) [
delay(20);- e1 V& Q: p" `1 Z# u% ?
}- o1 o' ^" W% k& C+ E$ W
}
0 M9 B3 G' e( D |
|