|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 h1 R# S! e$ q. B' d* V0 t1 W+ [& R% i
void PSCInit(void)
7 P' ?8 F" r. {. C{
5 C7 Y8 X# P# _4 b, A PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 {8 \: M" W0 ^ P4 U5 V}
' r- |: N- m f3 v* u4 j0 |8 z. ^' z- Y& q
void GPIOBankPinMuxSet(void)
& ~- I9 \' h. c }: K. t4 K- {: X" ?{
% x+ n/ B" X/ ~ // DRDY ------------ GPIO6[14] -- 1116 _2 l+ K$ R! l+ P' y' d. U
// SPI1_CLK ------------ GPIO2[13] -- 46
5 T& E7 j& Q( _! J // SPI1_SOMI------------ GPIO2[11] -- 44' _0 E0 I/ P) {7 B4 C( ]9 w3 m
// SPI1_SIMO------------ GPIO2[10] -- 43
5 Y2 k' b: y) L! M // SPI1_CS2 ------------ GPIO1[0] -- 175 c% Q0 m, |8 E
// SPI1_CS3 ------------ GPIO1[1] -- 18. C1 c9 h: x2 A# O7 ~" c8 \: v9 q
+ X* k K* U! ~- E7 \, d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: k. ~& Y6 }. l$ I7 J. _7 I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
' Q2 W+ b1 g8 ^; y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ ] C I2 b e. P( {& s/ g8 B
% M1 j5 N8 S" C. |6 K //DRDY
3 C1 z, l& n6 q9 g GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 \! ^* M2 g) ^5 h3 p5 f
// CS2,CS3
7 ^' }- K& W) L% D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 R8 f/ }6 ?& _+ O+ Z& v+ x6 K# I- } GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
2 n6 _3 _& B! x' D //SIMO
+ W9 t& s) M: k3 Y0 Z1 Q! { GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 ]; U2 q* x7 U% Y9 | @8 X
//SOMI6 c* x3 P( V& n" V& X" n, T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 s9 T: }- i' a' i5 t& i8 o: U //CLK
% D- {; a4 n, k1 G r- W a GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
6 O5 ^: I0 v1 H5 }6 B# k P8 k+ s+ C0 S4 m0 {
// LDAC6 f: x6 R: b* s2 u4 [
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* A; [* ~. D; K. N6 C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* e0 K; D2 d& c( n! K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 s% w( N+ U1 G7 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 @3 @: M F: V3 J0 _( g B) h% k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ D3 T Q" q, j! W5 g( i9 x& o}
4 u! \ ?0 S3 [ ?+ O; I
+ R; ?3 {- [, e7 uint main(void)1 O. h0 Y' o) N/ `) `; h: I, [6 o/ r
{
3 J6 {8 {- I$ t // 外设使能
; {; X+ N' W# Z1 i; w PSCInit();
6 X& U: O" b2 H8 I+ A5 w$ f% Z
0 u+ p( X) o$ s+ i; m9 B' b
% m, v6 j9 J1 \9 e2 K; G! T // 管脚复用配置3 P( V) G1 o- C! Y
GPIOBankPinMuxSet();$ a" p) v- |9 ^6 Z) K/ G
for(;;)7 A; ~% F) q' [! a# _, O+ z7 m/ }( k- P
{" S4 E% K' ~- w& Y) U2 x) G: H# ]/ U
SET_SCLK();//时钟正常输出/ B/ T+ |% m4 C( M7 q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 d' q% y" P4 w9 W2 y3 j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" y. X& E9 _0 o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
K! n; m8 F# c% M7 _
& v9 a6 q4 A q6 t$ N delay(20);
, u7 W( r' A" d1 {( f3 } CLR_SCLK();$ P: p9 U# r. @- N/ }( d6 z, K; }. @( _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 A4 c1 y. h$ |$ g( B% ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 D& y& c" n+ I: p3 C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 F- e5 b: ?- ^0 s5 D: y9 A delay(20);
7 h; I9 z* f) D! O& {3 i$ y }) H# E) n& {, H [/ g8 Q
}
$ k# |" o: i% g7 I" [ |
|