|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ @1 ]& B9 ?# @( R1 D ]
void PSCInit(void)
' g/ n) G/ M# A{
) B/ s0 m/ ^, k, h PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. a% H+ I5 R+ S0 |
}; v. N1 B! x1 Z9 N* W3 }# e
- f! u, a% ]* y
void GPIOBankPinMuxSet(void)
/ J6 z# c2 V+ o0 O, @% y" |) a{
3 O# q; c2 F( g8 u" p5 G // DRDY ------------ GPIO6[14] -- 111! W8 q8 N# `" {4 j4 g. s
// SPI1_CLK ------------ GPIO2[13] -- 46 y: f* v: M' S/ W# U1 s2 ^
// SPI1_SOMI------------ GPIO2[11] -- 44
$ I2 N9 d w, d // SPI1_SIMO------------ GPIO2[10] -- 43+ _8 `5 T, s2 T ^! q
// SPI1_CS2 ------------ GPIO1[0] -- 171 I7 L6 G! u8 G! R, O, s8 _4 F9 C
// SPI1_CS3 ------------ GPIO1[1] -- 188 S% X& @* Q, \! ?7 T( r" U' ?
Y T' y& B, E; L+ }; w! {0 a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( @) Z+ ?2 Q" B3 A D q/ v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* D) Y" Y9 F- m' i8 l" V8 i9 [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" B$ N! e. W( h; q/ I
, T8 O$ Y) j2 G //DRDY
6 C6 z4 h, G8 p, t$ ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( I% Q# x& f9 Y. B! R7 P
// CS2,CS3
5 w- `! Z# A+ Y8 G GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" K7 n6 t# G4 U
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ T5 x$ T. P' z% j //SIMO
* w$ ]3 E0 f/ A. K+ n# l$ u GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 p/ J0 |0 ?6 F/ e //SOMI
9 O/ y$ Q* P0 k# { GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" b! o ]: H& ]9 s
//CLK
$ h! b; `. \9 G. m8 j5 @& p; r( H GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! z8 M ?( ? S6 u1 j2 D
( F5 V& W' B7 {- m2 h( J- d
// LDAC
% K' i6 A/ m) H GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. s" s( F% t1 }% w; r- k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 j1 K- t( @6 F9 M2 w s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; o0 P7 `* m$ Z+ u8 I6 ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 C; b# k* U) _ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 n% v3 d0 L6 u; t' t& ?5 z
}5 ~3 e8 b% F4 \/ L7 M5 \# [8 j
" H/ O2 v a- v. R2 H
int main(void)3 B' ^1 }2 K& ?' k
{9 }& Z4 ?$ @$ P6 o$ r1 Y5 r
// 外设使能
4 C' U7 z' d/ T& H# ^7 I PSCInit();
: u" L( H4 |! m$ v( d; u, [" d' c0 v; U" I) f6 s
l! Z1 e& }% k/ l
// 管脚复用配置" b; b$ f5 l( r Y. b+ j3 q6 B4 k9 S
GPIOBankPinMuxSet();
9 t0 f. `* f& B, [' }) h7 { for(;;)
* u6 p; r! r7 P+ S {' f$ g+ S/ j6 p
SET_SCLK();//时钟正常输出 B4 B$ k& Q1 I! R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% L6 I+ M4 G# @3 X# u1 m) v GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' y! N6 Y4 E8 H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# X, {- |& \, H/ \! p
/ i1 O. m' k5 h6 X E5 I3 ^ delay(20);
0 G$ q6 Q& B0 r CLR_SCLK();
" c- S2 S, o) P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 i7 L6 w2 W% Z6 f9 L# C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3. e4 e5 ~7 W p/ \6 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# F. C7 U! I) N ~+ f9 ]6 v8 [ delay(20);
; M; i. k: O- P% Q/ }. `+ s" q }
! d1 X5 o8 G1 Y0 U- d, f}& \# C+ b9 [% W5 k
|
|